RVMで複数のRuby環境がある場合に、Railsアプリケーションのためのcronをどうするか? Rubyのパスはフルパス指定すればいいが、gemがRVMのgemを見に行かないのが問題。RVM環境でcronを実行する必要がある。
RVM: Ruby Version Manager - Using Cron with RVM
cron用のシェルスクリプト内で使用するRVM環境をロードするには以下のようにする。
まず、環境ファイルのパスを確認
$ rvm env --path -- ruby-version[@gemset-name]
実行例
$ rvm env --path -- 1.8.7-p371 /Users/pistolfly/.rvm/environments/ruby-1.8.7-p371
cron用のシェルスクリプトで環境ファイルを読み込む
例
source /Users/pistolfly/.rvm/environments/ruby-1.8.7-p371 /home/pistolfly/app_dir ruby script/runner -e production "ActiveRecord::SessionStore::Session.delete_all(['sessions.updated_at < ?', 6.hours.ago])"