Ошибка развертывания в AppCloud с ruby-debug19 в тексте, среды разработки

В EY AppCloud, даже когда вы запускаете среду разработки, они запускают пакет без разработки и тестирования. Мой Gemfile содержит это

group :test, :development do
  gem 'ruby-debug19', :require => 'ruby-debug'
end

и когда я развертываю, я получаю эту ошибку:

Successfully installed engineyard-serverside-1.4.2
1 gem installed
~> Deploying revision a01f92c migrating to new FactoryGirl
~> Pushing code to all servers
~> Starting full deploy
~> Copying to /data/eg/releases/20110821184344
~> Ensuring proper ownership
~> Gemfile detected, bundling gems
~> Symlinking configs
ln: creating symbolic link `/data/eg/releases/20110821184344/config/database.yml': File exists
~> Migrating: cd /data/eg/releases/20110821184344 && PATH=/data/eg/releases/20110821184344/ey_bundler_binstubs:$PATH RAILS_ENV=development RACK_ENV=development MERB_ENV=development rake db:migrate --trace
rake aborted!
no such file to load -- ruby-debug
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler/runtime.rb:68:in `require'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler/runtime.rb:66:in `each'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler/runtime.rb:66:in `block in require'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler/runtime.rb:55:in `each'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler/runtime.rb:55:in `require'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.15/lib/bundler.rb:120:in `require'
/data/eg/releases/20110821184344/config/application.rb:7:in `<top (required)>'
/data/eg/releases/20110821184344/Rakefile:5:in `require'
/data/eg/releases/20110821184344/Rakefile:5:in `<top (required)>'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:495:in `raw_load_rakefile'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:78:in `block in load_rakefile'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:77:in `load_rakefile'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:61:in `block in run'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:59:in `run'
/data/eg/shared/bundled_gems/ruby/1.9.1/gems/rake-0.9.2/bin/rake:32:in `<top (required)>'
/data/eg/releases/20110821184344/ey_bundler_binstubs/rake:16:in `load'
/data/eg/releases/20110821184344/ey_bundler_binstubs/rake:16:in `<main>'
~> [Attention] Maintenance page still up, consider the following before removing:
 * any deploy hooks ran, be careful if they were destructive
 * any migrations ran, be careful if they were destructive
 * your old code is still symlinked as current
Failed deployment recorded in AppCloud
Deploy failed

Если я закомментирую строку gem 'ruby-debug19' в Gemfile, она сработает. Но в любом случае это следует игнорировать, поскольку, как уже упоминалось, AppCloud игнорирует драгоценные камни среды тестирования и разработки. Он работает локально в обоих случаях. Кто-нибудь вообще может подумать, чем это может быть вызвано?


person 99miles    schedule 21.08.2011    source источник


Ответы (2)


Я полагаю, это потому, что config/application.rb вызывает Bundler.require с несколькими именами групп, одно из которых Rails.env. У вас RAILS_ENV в командной строке стоит development, что означает, что Bundler.require пытается загрузить группу development и требует в ней вещи, в том числе ruby-debug. Поскольку в связке была установлена ​​группа development, она ломается.

Вероятно, лучше всего использовать development для RAILS_ENV при локальном запуске приложения и либо staging, либо production для вашего приложения в AppCloud.

person dpiddy    schedule 22.08.2011
comment
Зачем тогда EY это делать? Кажется, что в каждом случае, когда вы помещаете что-то только в группу разработки, приложение не запускается (в режиме разработки на EY), потому что оно не устанавливает те драгоценные камни, которые затем пытается потребовать application.rb? Кроме того, я не могу воспроизвести это локально после запуска «bundle install --without development test». Это кажется странным. Спасибо! - person 99miles; 22.08.2011
comment
Зачем EY что делать? Я могу воспроизвести его локально: gist.github.com/1162178. Однако кажется, что он ломается только тогда, когда присутствует :require => 'ruby-debug19'. Это может быть ошибка в сборщике. - person dpiddy; 22.08.2011

AppCloud не устанавливает группы «разработка» или «тест» по умолчанию. Вам нужно будет настроить это в файле eydeploy.rb. Вы можете найти документацию по группам установки по адресу http://docs.engineyard.com/bundler-tips-for-appcloud.html.

person emachnic    schedule 22.08.2011