我的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失败?
答案 0 :(得分:3)
Capistrano默认情况下不会在bundle exec
命令之前放置rake
。如果您确定捆绑中包含rake gem,请尝试将其添加到deploy.rb
。
set :rake, 'bundle exec rake'
这将告诉Capistrano而不只是rake
运行bundle exec rake
。如果它在您的捆绑包中,您将不再有任何问题,如果您的系统上安装了更多版本的rake,您也将避免冲突。
答案 1 :(得分:0)
答案 2 :(得分:0)
进入app文件夹后,只需键入:
$bundle exec rake
而非$rake