teppeilog

ちょっとずつエンジンかかってきた

whenever の使い方

leave a comment

Railsアプリケーションで定期的に何かを実行したいという場合、wheneverを使用するという選択肢があるかと思います。wheneverは要するにLinuxのcronの設定をrubyから行えるというもの。environment.rbの設定も引き継いだrubyスクリプトを実行できるので、DBへのアクセスも簡単。

まずはインストール。

sudo gem install whenever

Railsディレクトリで

wheneverize

を実行すると ./config/schedule.rb が作成される。このファイルにcron設定を書く。

schedule.rbの中には書き方のサンプルがあるので多分大丈夫。たとえば sample.rb ってスクリプトを1時間毎00分に動かしたいときは

every 1.hours, :at => 0 do
  set :output, {:error => 'log/error.log', :standard => 'log/cron.log'}
  runner './sample.rb'
end

runner は ./script/runner のこと。

cron設定を反映するには

whenever --update-crontab

内容を確認するには

crontab -l

logをみて No such file or directory のエラーが出ている場合、runnerに書かれてるrubyのパスが間違っている場合があります。デフォルトが #!/usr/bin/env ruby となっているので、環境に合わせてパスを修正する必要があります。

このエントリーをはてなブックマークに追加
はてなブックマーク - whenever の使い方
Share on Facebook

Written by teppei

1月 12th, 2012 at 3:55 pm

Posted in プログラミング

Tagged with ,