2010-10-14 16 views
9

He publicado this question buscando algo similar a Buildout para Perl. Creo que Shipwright es lo que estoy buscando, pero no estoy muy seguro. He jugado con eso y creé un proyecto, importé todas mis fuentes y dependencias y exporté todo a un barco, luego la documentación se detuvo. ¿Qué hago con un buque de astillero? ¿Realizo mi trabajo de desarrollo real en el barco, o hago mi desarrollo en el Astillero? Asumo que el barco es solo para el despliegue, pero ¿cómo realmente despliego un buque a un servidor web (digamos que estoy usando linux, apache y simplemente ejecutando cgi directamente).¿Cuál es una buena forma de implementar una aplicación Perl?

¿Es Shipwright lo correcto para lo que estoy tratando de lograr o hay algo más que sería más apropiado? Idealmente, podría usar Shipwright de forma similar a como uso Buildout. Utilizo Buildout para crear un entorno agradable y aislado para mi desarrollo, y también uso Buildout al implementar en servidores activos para administrar todas las dependencias de mi aplicación.

EDITAR: Estos son los aspectos más destacados de lo que puedo hacer con Buildout que me gustaría poder hacer en Perl.

Con Buildout, tengo un archivo en mi base de código que enumera las dependencias (que para Perl serían módulos de CPAN u otros repositorios de origen). Puedo ejecutar un script bootstrap que busque todas esas dependencias y las coloque en un directorio dentro de mi proyecto y NO las instale en un nivel de sistema. Buildout también crea scripts de utilidad que pueden hacer lo que quieras (ejecutar pruebas, otras herramientas de línea de comandos, cualquier cosa en realidad) y esos scripts agregan explícitamente las dependencias a la ruta para que mis scripts estén en ejecución y todas mis dependencias estén disponibles para importar.

Lo que realmente hace muy bien es que me permite administrar mis dependencias sin tener que instalar nada a nivel de sistema. Lo que hace que cambiar de una versión a otra sea muy fácil. Además, me permite tener múltiples proyectos Buildout ejecutándose en el mismo sistema usando diferentes versiones del mismo módulo. Finalmente, un gran beneficio es que con la estructura de directorios de Buildout, puedo simplemente comprometer las dependencias con el control de origen y desplegarlo en una nueva máquina. Solo necesito hacer un checkout y todas mis dependencias ya están satisfechas sin tener que tocar nada instalado en un nivel de sistema.

+0

Las opciones que debe considerar dependen mucho de lo que está tratando de hacer. Es posible que desee echar un vistazo a PAR, también. – tsee

+0

Curioso ya que nunca he Buildout; ¿Qué problema (s) resuelven sistemas como este? Distribuyendo el código? ¿Ejecutando el código? –

+0

Para cualquiera que encuentre esto buscando información sobre Shipwright, aquí hay un tutorial muy bueno sobre cómo "enviar" su embarcación. http://serialized.net/2010/08/deploying-self-contained-perl-dancer-applications/ Actualmente estoy intentando crear un proceso de implementación para una aplicación web. – Relequestual

Respuesta

3

No creo que encuentres nada exactamente igual a Buildout en Perl, pero podrías armar un par de cosas que harían el truco.

Se puede usar un guión estándar para Build.PL Module::Build para la gestión de sus dependencias y que tiene comandos para ejecutar las pruebas, etc.

Posteriormente, se podría utilizar cpanminus para hacer la instalación de esas dependencias en un local (no sistema) directorio.

Luego, es posible que pueda usar Shipwright para agrupar e implementar el proyecto con estas dependencias ahora locales.

+0

Me gusta el sonido de eso. Por lo que parece, no creo que necesite Shipwright con Module :: Build y cpanminus. Echaré un vistazo a esos, ¡gracias! –

+0

Parece que esto podría comportarse de manera similar a la construcción, sin embargo, también implica un montón de trabajo manual (la instalación de cada dependencia individualmente es lo que estoy tratando de evitar), estoy buscando algo completamente automático. Tal vez solo necesite desarrollar mi propio entorno localizado automatizado que use cpanm bajo las cubiertas. –

+0

@matthew - Module :: Build tiene un objetivo "installdeps" que instalará todas las dependencias y sus dependencias. No sé si hay una manera fácil de conectar cpanm en eso y no sé la manera más fácil de usar algo como local :: lib para instalar cosas localmente, etc. Pero eso debería ayudarte a empezar. – mpeters

Cuestiones relacionadas