can bundler se utilizará en implementaciones de rsync?

Puedes implementar una aplicación Rails3 usando el Gemfile de Bundler SIN ejecutarbundle install ... es decir, simplemente copiando un directorio de proyecto de rails en el directorio apropiado dentro de Apache / Passenger?

Entonces, tenemos un entorno heredado que fue diseñado para proyectos internos durante el marco de tiempo Ruby1.8.6 / Rails2 y depende de copiar su directorio local de rieles a un montaje de red en Apache / Passenger. Si bien este modelo de implementación funcionó bien para Rails2 (con gemas congeladas, etc.), se rompe de muchas maneras dolorosas para Rails3 con Bundler.

Específicamente, veo errores de dependencia de gemas para gemas en: prueba y: grupos de desarrollo incluso cuando se implementa en: producción. La siguiente publicación SO me pareció útil al principio:

bundler intenta incorrectamente instalar gemas de grupo "desarrollo" y "prueba" en producción

Así que ejecutébundle install --without test development en mi local y luego intenté copiar manualmente .bundle / config de mi directorio al directorio de red, pero eso no funcionó. Bundler todavía intentó cargar las gemas excluidas.

Esto es doloroso para nosotros porque no tenemos privilegios de administrador para instalar gemas en estos servidores (es decir, no se nos permite ejecutarbundle install de cualquier manera). Del mismo modo, los administradores no quieren molestarse en implementar nuestras aplicaciones cada 5 minutos, ya que este es un sitio de creación de prototipos interno y no un sitio de producción externo. Tampoco quieren correrbundle install porque quieren un control estricto de qué gemas se implementan en todas las aplicaciones; por ejemplo, algunas aplicaciones todavía están basadas en Rails2 y aún no usan Bundler, por lo que pueden romperse si se instala la gema incorrecta.

¿Hay alguna forma de usar Bundler de forma pasiva / rsync, o deberíamos rediseñar nuestro entorno para permitir que los desarrolladores ejecutenbundle install via capistrano o algo así?

¿Ayuda

¡Gracias

ACTUALIZAR 18/01/2012: Después de investigar el motivo de los errores de: test y: grupo de desarrollo un poco más, yodescubiert que Phusion Passenger realmente ejecutaBundle.setup() antes de que la aplicación Rails tenga la oportunidad de entrar enboot.rb. Sin ningún argumento,setup() comprueba todas las dependencias de gemas, lo que significa que si no encuentra una gema en el servidor, explotará en Passenger incluso antes de que tenga la oportunidad de cargar Rails.

Este 'error' en particular solo puede ocurrir si implementa a través de rsync o copia en lugar de ejecutarbundle install --without test:development en el servidor de destino. La mayoría de las aplicaciones Rails3 se implementan con Capistrano, que realiza este paso por usted y, como tal, nunca se encuentra con este caso límite particular.

Así que me temo que la única forma de hacer que los 'grupos' funcionen correctamente en su archivo de gemas es usarbundle install Como era la intención. ¡Esto significa que deberíamos cambiar nuestro proceso de implementación!

Respuestas a la pregunta(3)

Su respuesta a la pregunta