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 しておくという方法を採用しています。