2011-08-21 23 views
1

在EY AppCloud中,即使在開發環境中運行,它們也會運行bundler - 無需開發和測試。我的Gemfile包含此在文本,開發環境中使用ruby-debug19在AppCloud上部署錯誤

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 

如果我註釋掉寶石「紅寶石debug19」線的Gemfile它的工作原理。但是,正如前面提到的那樣,AppCloud忽略了測試和開發環境。它在兩種情況下在本地都有效。任何人都可以想到什麼可能會導致這種情況?

回答

3

我相信這是因爲config/application.rb調用Bundler.require與幾個組名稱,其中之一是Rails.env。您在命令行上的RAILS_ENVdevelopment,這意味着Bundler.require正試圖加載development組並需要其中的東西,其中包括ruby-debug。由於該軟件包已安裝development組,因此它會中斷。

可能是最好的運行你的應用程序時本地,要麼stagingproduction對AppCloud您的應用程序使用developmentRAILS_ENV

+0

爲什麼安永會這麼做呢?看起來在任何情況下,你只在開發組中放入某些東西,應用程序將無法啓動(在EY上的開發模式下)b/c時,它不會安裝application.rb然後嘗試要求的那些gem。另外,在運行「捆綁安裝 - 無需開發測試」之後,我無法在本地重現這一點。這似乎很奇怪。謝謝! – 99miles

+0

爲什麼安永會做什麼?我可以在本地複製它:https://gist.github.com/1162178。當':require =>'ruby-debug19'出現時,它似乎只會中斷。這可能是捆綁商的一個錯誤。 – dpiddy

相關問題