Rubyのバッチ処理でActiveRecordを使ってモデルクラス経由でのDB接続方法
Rubyでバッチ処理を書いているのだがDBへの接続で苦戦した。
RailsのActiveRecordのように簡単に出来るものだと思っていたのだがそうもいかず..
しかしrails runnerを使えばRails同様のアクセス方法でいけるという事を知りました。
まずは準備としてconfig/application.rbに
config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += Dir["#{config.root}/lib/**/"]
次にrailsプロジェクトのlib/tasks配下にバッチファイル(sample_batch.rb)作成
//使用するモデルファイル(test)を読み込む require "#{Rails.root}/app/models/user" class Tasks::SampleBatch def self.execute test = Test.new //userインスタンスに色々値を設定したりする user.save end end
でもってコマンドラインから
rails runner Tasks::SampleBatch.execute
これでOK!!
参考URL
http://www.slowlydays.net/wordpress/?p=707
http://www.tamrable.info/?p=299