Ruby on rails 在文本、开发环境中使用ruby-debug19在AppCloud上部署错误

Ruby on rails 在文本、开发环境中使用ruby-debug19在AppCloud上部署错误,ruby-on-rails,bundler,engineyard,Ruby On Rails,Bundler,Engineyard,在EY AppCloud中,即使您在development env中运行,它们也会运行bundler,而无需进行开发和测试。我的文件包含这个 group :test, :development do gem 'ruby-debug19', :require => 'ruby-debug' end 部署时会出现以下错误: Successfully installed engineyard-serverside-1.4.2 1 gem installed ~> Deploying

在EY AppCloud中,即使您在development env中运行,它们也会运行bundler,而无需进行开发和测试。我的文件包含这个

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
已成功安装engineyard-serverside-1.4.2
已安装1个gem
~>部署版本a01f92c迁移到新FactoryGirl
~>将代码推送到所有服务器
~>开始完全部署
~>复制到/data/eg/releases/20110821184344
~>确保适当的所有权
~>检测到Gemfile,正在绑定gems
~>符号链接配置
ln:正在创建符号链接“/data/eg/releases/20110821184344/config/database.yml”:文件存在
~>迁移:cd/data/eg/releases/20110821184344&&PATH=/data/eg/releases/20110821184344/ey\u bundler\u binstubs:$PATH RAILS\u ENV=development RACK\u ENV=development MERB\u ENV=development rake db:migrate--trace
雷克流产了!
没有这样的文件要加载——ruby调试
/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层)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`'
/data/eg/releases/20110821184344/Rakefile:5:in'require'
/data/eg/releases/20110821184344/Rakefile:5:in`'
/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:在“标准异常处理”中
/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:在“标准异常处理”中
/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`'
/data/eg/releases/20110821184344/ey_bundler_binstubs/rake:16:in'load'
/data/eg/releases/20110821184344/ey_bundler_binstubs/rake:16:in`'
在维护之前,请考虑以下内容:
*任何部署挂钩运行时,如果它们具有破坏性,请小心
*运行任何迁移时,如果它们具有破坏性,请小心
*您的旧代码仍被符号链接为当前代码
AppCloud中记录的部署失败
部署失败

如果我在Gemfile中注释掉gem'ruby-debug19'行,它就会工作。但无论如何都应该忽略这一点,因为正如前面提到的,AppCloud忽略了测试、开发环境gems。在这两种情况下,它都在本地工作。任何人都能想到这可能是什么原因吗?

我相信这是因为
config/application.rb
调用了
Bundler.require
,其中一个是
Rails.env
。命令行上的
RAILS\u ENV
development
,这意味着
Bundler.require
正在尝试加载
development
组并需要其中的内容,包括
ruby debug
。由于捆绑包已安装在
开发
组中,因此它会中断


在本地运行应用程序时,最好使用
development
进行
RAILS\u ENV
,在AppCloud上为应用程序进行
staging
production

AppCloud默认情况下不安装“开发”或“测试”组。您需要在
eydeploy.rb
文件中配置它。您可以在上找到有关安装组的文档。

为什么EY要这样做?似乎在每一种情况下,你只在开发组中放置了一些东西,应用程序将无法启动(当在EY上处于开发模式时)b/c它不会安装应用程序所需的gems。rb然后尝试安装这些gems?此外,在运行“bundle安装——无开发测试”之后,我无法在本地复制此功能。这似乎很奇怪。谢谢为什么EY会做什么?我可以在本地复制它:。不过,它似乎只有在出现
:require=>'ruby-debug19'
时才会中断。这可能是bundler中的一个bug。