Elastic Beanstalk Ruby / Rails precisa instalar o git assim que o bundle install funciona .. mas não é

Estou tendo um problema ao implantar nosso aplicativo rails. Criei um hook como o exemplo no blog da AWS howto http://ruby.awsblog.com/post/Tx2AK2MFX0QHRIO/Deploying-Ruby-Applications-to-AWS-Elastic- Beanstalk-com-Git como:

packages: yum: git: [] 

mesmo eu executo um pacote de pacotes para criar vendor / cache para ter todas as gemas lá … e ainda assim ficar: git: //github.com/refinery/refinerycms-search.git (em 2-0-stable) não está marcado Fora. Por favor, execute bundle install (Bundler :: GitError)

qualquer ajuda será legal, estamos tentando mover todos os nossos aplicativos para o EB. mas vê que o git não instala ou algo está acontecendo .. Eu preciso do git na instância do EB ec2 que ele cria.

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 

UPDATE mais informações: resolvi fazer o login na instância com ec2-user e perceber que o git está instalado as gemas que preciso SÃO instaladas até agora eu posso ver .. quando faço lista de bundles todas elas aparecem mesmo que o erro seja reclamando sobre .. Eu noto que quando eu faço uma lista gem geral, então não aparece … mas deve estar usando o pacote um.

( Observe que a seguinte solução alternativa só deve ser usada se você precisar usar fonts Git para dependencies. É recomendável não instalar dependencies de repositorys Git externos, se puder ser evitado. Veja abaixo os detalhes sobre o motivo. )

Ao usar bibliotecas suportadas pelo Git em um Gemfile com Passenger, você deve desativar gems compartilhadas em uma instalação (além de instalar o Git no hook listado acima). Você pode fazer isso configurando a variável de ambiente BUNDLE_DISABLE_SHARED_GEMS em seu arquivo .ebextensions/ruby.config existente da .ebextensions/ruby.config forma:

 option_settings: - option_name: BUNDLE_DISABLE_SHARED_GEMS value: "1" - option_name: BUNDLE_PATH value: "vendor/bundle" packages: yum: git: [] 

A desativação de gemas compartilhadas forçará todas as dependencies a serem vendidas em seu aplicativo no vendor/bundle conforme especificado pela variável BUNDLE_PATH .

Observe que, sempre que possível, você deve evitar instalar bibliotecas públicas de fonts do Git com seu aplicativo. Usar o Git para locais de bibliotecas introduz outro ponto de falha para uma instalação de implantação, uma vez que o repository Git pode estar temporariamente indisponível ou mesmo permanentemente movido. Além disso, tenha em mente que forçar instalações vendidas em uma implantação fará com que as implantações do Elastic Beanstalk sejam muito mais lentas nas implementações subseqüentes de um aplicativo com as mesmas dependencies. Isso ocorre porque as bibliotecas serão reinstaladas em cada implementação, em vez de aproveitarem a instalação em todo o sistema que o Elastic Beanstalk tem como padrão o desempenho do Bundler.

Em resumo, se houver uma versão oficial do RubyGem da biblioteca em questão, você deve usar essa versão; e se não, você deve sugerir ao autor da biblioteca que uma versão oficial do RubyGem seja disponibilizada.

FYI uma pergunta semelhante sobre este problema Git com implantações de Passenger / Rails regulares foi previamente perguntado: Rails 3: Passenger não pode encontrar git gems instaladas pelo bundler

Outra opção é empacotar a fonte gem diretamente com o seu aplicativo e, em seguida, apontar o bundler para isso.

Copie a fonte gem em vendor / gems / mygem

Então, no seu Gemfile:

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

Veja mais aqui: http://viget.com/extend/bundler-best-practices

O Amazon Elastic Beanstalk O Ruby AMI precisa de alguns ajustes para permitir que você inclua gems do git sem sacrificar a velocidade de implementação, comportamento que você sai da checkbox com Capistrano e Heroku.

Felizmente, a API de configuração do Elastic Beanstalk possibilita os ajustes necessários sem exigir que você mantenha uma AMI personalizada.

Aqui está a configuração do Elastic Beanstalk que eu uso para obter o comportamento de implementação Ruby convencional desejado com a própria AMI da Amazon: https://github.com/gkop/elastic-beanstalk-ruby .

  • ok bem depois de muita pesquisa e testes eu acho que isso estava relacionado com a Amazon ter alguns problemas com os valores env de passageiros …
  • Eu era capaz de executar manualmente rails e, em seguida, ele funcionou bem e todas as gemas carregadas .. mas com o passageiro não tão encontrar que se eu corro

    pacote de pacote – all

  • –all então também embala as git gems ..

  • então vai correr como um encanto

  • para ser capaz de ter essa execução no meio tempo Amazon corrige esse problema com o pacote Eu crio um gancho e forçá-lo a executar após cada instalação. Não é o melhor caminho, mas funciona.

Nota: usando o gancho eu não posso ver para executar o comando em atualizações do EB para que eu adicione o fornecedor / cache e carrega tudo por padrão.

Depois de tentar a resposta aceita, descobri que um simples .ebextensions/ruby.config era a única configuração que funcionava:

 packages: yum: git: []