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 となっているので、環境に合わせてパスを修正する必要があります。