2009年4月7日火曜日

Ruby on Railsでバッチ処理をするためのメモ

Ruby on Railsを使ってcronジョブを実行するためのメモ。

例えば朝の5時にある処理を行いたい場合
crontabに次のように書く

0 5 * * * /usr/bin/ruby /path/to/rails_app/script/runner 'User.do_something'

キモはscript/runner
rails環境(activerecordとかactivesupportとか)を利用したスクリプトを実行できる。

model/user.rb
class User < ActiveRecord::Base
def self.do_something
# ~何か処理を書く
end
end

ただし!
production環境で実行する場合は注意が必要。
実行環境(environment)をきちんと明示しないと、デフォルトでは開発development環境として実行されるようだ(要確認)。
production環境下で実行しようとしたら自分の場合MySQLのエラーが発生した。

# ruby script/runner 'User.do_something'
#`real_connect': Host 'hostname' is not allowed to connect to this MySQL server (Mysql::Error)


production環境を明示する必要があるようだ。

# ruby script/runner 'User.do_something' -e production

0 件のコメント: