ruby-on-rails - services - install elastic beanstalk ubuntu




Elastic Beanstalk Ruby/Rails necesita instalar git para que la instalación del paquete funcione... pero no es así (4)

( Tenga en cuenta que la siguiente solución alternativa solo se debe utilizar si debe usar las fuentes de Git para las dependencias. Se recomienda no instalar dependencias de repositorios Git externos si se puede evitar. Consulte a continuación para obtener detalles sobre por qué ) .

Al usar bibliotecas respaldadas por Git en un Gemfile con Passenger, debe deshabilitar las gemas compartidas en una instalación (además de instalar Git en el enlace que enumeró arriba). Para ello, establezca la variable de entorno BUNDLE_DISABLE_SHARED_GEMS en su .ebextensions/ruby.config existente .ebextensions/ruby.config la siguiente manera:

option_settings:
  - option_name: BUNDLE_DISABLE_SHARED_GEMS
    value: "1"
  - option_name: BUNDLE_PATH
    value: "vendor/bundle"

packages:
  yum:
    git: []

La desactivación de las gemas compartidas obligará a todas las dependencias a ser enviadas a su aplicación en vendor/bundle según lo especificado por la variable BUNDLE_PATH .

Tenga en cuenta que, siempre que sea posible, debe evitar la instalación de bibliotecas públicas de fuentes de Git con su aplicación. El uso de Git para las ubicaciones de la biblioteca introduce otro punto de falla para una instalación de implementación, ya que el repositorio de Git puede no estar disponible temporalmente o incluso moverse permanentemente. También tenga en cuenta que forzar instalaciones guardadas en una implementación hará que sus implementaciones de Elastic Beanstalk sean mucho más lentas en despliegues posteriores de una aplicación con las mismas dependencias. Esto se debe a que las bibliotecas se volverán a instalar en cada implementación en lugar de aprovechar la instalación de todo el sistema que Elastic Beanstalk hace que Bundler realice de manera predeterminada.

En resumen, si hay una versión oficial de RubyGem de la biblioteca en cuestión, debe usar esa versión; y si no, debe sugerir al autor de la biblioteca que se ponga a disposición una versión oficial de RubyGem.

Para su información, una pregunta similar sobre este problema de Git con despliegues regulares de Pasajeros / Rieles fue previamente solicitada: Rails 3: El pasajero no puede encontrar las gemas de Git instaladas por bundler

Tengo un problema al implementar nuestra aplicación de rieles ... Creé un gancho como el ejemplo en el blog de AWS howto http://ruby.awsblog.com/post/Tx2AK2MFX0QHRIO/Deploying-Ruby-Applications-to-AWS-Elastic-Beanstalk-with-Git como:

packages:
  yum:
    git: []

incluso ejecuto un paquete paquete para crear proveedor / caché para tener todas las gemas allí ... y todavía obtener: git: //github.com/refinery/refinerycms-search.git (en 2-0-estable) no está marcado fuera. Ejecute la bundle install (Bundler :: GitError)

cualquier ayuda será agradable, estamos tratando de mover todas nuestras aplicaciones a EB. pero seens que el git no se instala o algo está sucediendo ... Necesito git en la instancia de EB ec2 que crea.

StackTrace:

Error message:
git://github.com/refinery/refinerycms-search.git (at 2-0-stable) is not checked out.         Please run `bundle install` (Bundler::GitError)
Exception class:
PhusionPassenger::UnknownError
Application root:
/var/app/current
Backtrace:
#   File    Line    Location
0   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/source.rb 801 in        `rescue in load_spec_files'
1   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/source.rb 799 in   `load_spec_files'
2   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/source.rb 381 in `local_specs'
3   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/source.rb 774 in `specs'
4   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/definition.rb 174 in `block in resolve'
5   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/definition.rb 172 in `each'
6   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/definition.rb 172 in `resolve' 
7   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/definition.rb 113 in `specs'
8   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/definition.rb 158 in `specs_for'
9   /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/definition.rb 147 in `requested_specs'
10  /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/environment.rb    23  in `requested_specs'
11  /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb    11   in `setup'
12  /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler.rb    116 in `setup'
13  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/utils.rb    326 in `prepare_app_process'
14  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/rack/application_spawner.rb 156 in `block in initialize_server'
15  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/utils.rb    563 in `report_app_init_status'
16  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/rack/application_spawner.rb 154 in `initialize_server'
17  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-  1002/support/lib/phusion_passenger/abstract_server.rb    204 in `start_synchronously'
18  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/abstract_server.rb  180 in `start'
19  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/rack/application_spawner.rb 129 in `start'
20  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/spawn_manager_orig.rb   253 in `block (2 levels) in spawn_rack_application'
21  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/abstract_server_collection.rb   132 in `lookup_or_add'
22  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/spawn_manager_orig.rb   246 in `block in spawn_rack_application'
23  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/abstract_server_collection.rb   82  in `block in synchronize'
24      prelude>    10:in `synchronize'
25  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/abstract_server_collection.rb   79  in `synchronize'
26  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/spawn_manager_orig.rb   244 in `spawn_rack_application'
27  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/spawn_manager_orig.rb   137 in `spawn_application'
28  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/spawn_manager.rb    16  in `spawn_application_with_env'
29  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/spawn_manager_orig.rb   275 in `handle_spawn_application'
30  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/abstract_server.rb  357 in `server_main_loop'
31  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/lib/phusion_passenger/abstract_server.rb  206 in `start_synchronously'
32  /var/lib/passenger-standalone/3.0.17-x86_64-ruby1.9.3-linux-gcc4.4.6-1002/support/helper-scripts/passenger-spawn-server

ACTUALIZA más información: decidí iniciar sesión en la instancia con ec2-user y observar que git está instalado. Las gemas que necesito están instaladas. Puedo ver ... cuando hago la lista de paquetes, todas aparecen incluso cuando el error es quejándose ... Me doy cuenta de que cuando hago una lista general de gemas, entonces NO aparece ... pero debería estar usando el paquete uno.


Después de probar la respuesta aceptada, descubrí que un .ebextensions/ruby.config más simple era la única configuración que funcionaba:

packages:
  yum:
    git: []

Otra opción es empaquetar la fuente de la gema directamente con su aplicación y luego apuntar a la agrupadora.

Copie la fuente de la gema en el proveedor / gems / mygem

Luego, en tu Gemfile:

gem 'mygem', path: File.join(File.dirname(__FILE__), 'vendor', 'gems', 'mygem')

Vea más aquí: http://viget.com/extend/bundler-best-practices


  • De acuerdo, después de mucha investigación y pruebas, creo que esto estaba relacionado con que Amazon tuviera algunos problemas con los valores env de los pasajeros ...
  • Pude ejecutar los rieles manualmente y luego funcionó bien y se cargaron todas las gemas ... pero con el pasajero no lo encontré así si corro

    paquete paquete --todos

  • --todo para que también empaquete las gemas git ..

  • entonces correrá como un encanto ...

  • para poder ejecutar esto mientras tanto Amazon soluciona este problema con el paquete. Creo un gancho y lo forzo a ejecutar después de cada instalación. no es la mejor manera, pero funciona

Nota: al usar el gancho, no veo ejecutar el comando en las actualizaciones de EB, así que agregué el proveedor / caché y lo sube todo de forma predeterminada.







elastic-beanstalk