1

我的 Capistrano deploy:migrate 任务设置为运行一个简单的 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

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

4

3 回答 3

3

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

set :rake, 'bundle exec rake'

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

于 2012-10-03T15:36:04.873 回答
0

您可能还需要将您的宝石与此捆绑:

require "bundler/capistrano"

Via:为什么 Capistrano 不使用 bundler 安装 gem?

于 2013-08-23T22:46:51.930 回答
0

一旦你进入你的应用文件夹,你只需输入: $bundle exec rake而不是仅仅$rake

于 2013-08-23T23:32:34.390 回答