rvm + whenever + capistrano するときの schedule.rb の設定

rvm で project rvmrc を使いながら開発し、capistrano でデプロイ、whenever で cron を管理したときの config/schedule.rb の設定の話です。

capistrano + whenever だと「config/deploy.rb」に

require "whenever/capistrano"

と書くだけでデプロイ時に cron を更新してくれて便利なのですが、schedule.rb に

runner 'Model.job'

と書いたとき、デフォルトでは、

/bin/bash -l -c 'cd /path/to/project/20110303000000 && script/runner -e production '\''Model.job'\'''

のようになるため、デプロイの度にに新しいディレクトリに cd して trust するかどうかの確認がでてしまし、実行できません。

いろいろ試行錯誤した結果、

set :path, ENV['PWD']

と書いておくと、

/bin/bash -l -c 'cd /path/to/project/current && script/runner -e production '\''Model.job'\'''

と出力できるので、現在では /path/to/project/current をあらかじめ trust しておくという方法を採用しています。