3

我正在将带有 Capistrano 的 Rails 3.2.2、Ruby 1.9.3 应用程序部署到 Linux 服务器。当我运行时,cap deploy我收到此错误:

  * executing `deploy:assets:precompile'
  * executing "cd /var/www/production/releases/20120418090209 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
    servers: ["example.com"]
    [example.com] executing command
    [example.com] sh -c 'cd /var/www/production/releases/20120418090209 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'
 ** [out :: example.com] rake aborted!
 ** [out :: example.com] cannot load such file -- ruby-debug
 ** [out :: example.com] 
 ** [out :: example.com] (See full trace by running task with --trace)
    command finished in 8962ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/production/releases/20120418090209; true"
    servers: ["example.com"]
    [example.com] executing command
    [example.com] sh -c 'rm -rf /var/www/production/releases/20120418090209; true'
    command finished in 176ms
failed: "sh -c 'cd /var/www/production/releases/20120418090209 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'" on example.com

它说,ruby-debug没有找到宝石。但是 ruby​​-debug 不在我的 Gemfile 的生产组中:

group :development, :test do
  gem "steak"
  gem "linecache19", :git => "git://github.com/mark-moseley/linecache", :require => "ruby-debug"
  gem "ruby-debug-base19x", "~> 0.11.30.pre4"
  gem "ruby-debug19"
  gem "rails_best_practices"
  gem "ruby_parser"
  gem "reek"
  gem "flog"
  gem "jslint_on_rails", :git => "git://github.com/psionides/jslint_on_rails"
  gem "jasmine-rails"
end

导致在rake assets:precompile命令之后引发错误,我认为它与 Capistrano 和load 'deploy/assets'我的 Capfile 中的调用有关:

load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['config/deploy/recipes/*.rb','vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy' # remove this line to skip loading any of the default tasks
# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'

当我删除这条线时,一切都部署得很好,但是(当然)在生产中找不到资产。而且,如果我bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile直接在服务器上运行(在应用程序目录内),我会得到同样的错误。

所以我该怎么做?

4

1 回答 1

1

ruby-debug is obsolete. In ruby >= 1.9 you should use excellent debugger gem see: https://github.com/cldwalker/debugger and http://railscasts.com/episodes/54-debugging-ruby-revised

于 2012-04-18T10:06:54.860 回答