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 rakessh (/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'

rakeこれにより、Capistrano はrunではなく to を実行するように指示されますbundle exec rake。それがバンドルに含まれていれば、問題はなくなります。また、システムにインストールされている rake のバージョンが増えても、衝突を避けることができます。

于 2012-10-03T15:36:04.873 に答える
0

gem をこれにバンドルする必要がある場合もあります。

require "bundler/capistrano"

Via: Capistrano がバンドラーで gem をインストールしないのはなぜですか?

于 2013-08-23T22:46:51.930 に答える