Capistrano deploy:migrate在任何来源中都找不到rake-0.9.2.2

时间:2012-10-03 14:16:17

标签: ruby-on-rails capistrano rails-migrations

我的Capistrano部署:迁移任务设置为运行简单的rake db:migrate命令,如下所示:

env PATH=/home/user/.gems/bin sh -c 'cd /home/user/app/releases/20121003140503 && rake RAILS_ENV=production  db:migrate'

当我在ssh会话期间手动运行此任务时,它成功完成。但是,当我从本地开发框运行时,收到以下错误:

** [out :: app] Could not find rake-0.9.2.2 in any of the sources

我可以通过ssh(/home/user/.gems/bin/rake)键入which rake找到我的rake gem,rake --version给我“rake,版本0.9.2.2”所以我不明白为什么这个命令会通过Capistrano失败?

3 个答案:

答案 0 :(得分:3)

Capistrano默认情况下不会在bundle exec命令之前放置rake。如果您确定捆绑中包含rake gem,请尝试将其添加到deploy.rb

set :rake, 'bundle exec rake'

这将告诉Capistrano而不只是rake运行bundle exec rake。如果它在您的捆绑包中,您将不再有任何问题,如果您的系统上安装了更多版本的rake,您也将避免冲突。

答案 1 :(得分:0)

您可能还需要将宝石捆绑在一起:

require "bundler/capistrano"

通过:Why is Capistrano not installing gems with bundler?

答案 2 :(得分:0)

进入app文件夹后,只需键入: $bundle exec rake而非$rake