RailsアプリでActiveRecordを使ったバッチ処理

定期的にAPIからデータを取得するためのバッチ処理を作成している。

まずやりたいことはActiveRecordを使うこと。
あとデータベースの情報はdatabase.ymlから取得するようにする。いろんなところに分散してしまうのは気持ち悪いので。

それで出来たのが以下のようなコード。

require 'rubygems'
require 'active_record'
require 'yaml'

ConfigFile = File.join(File.dirname(__FILE__), "..", "config", "database.yml")
ds = YAML.load(File.read(ConfigFile))
ActiveRecord::Base.establish_connection(ds["development"])

これでActiveRecordを使うことができる。

ds[“development”]の内容を展開すると以下のようなかんじになる。

ActiveRecord::Base.establish_connection(
  :adapter => "mysql",
  :host => "localhost",
  :username => "user",
  :password => "pass",
  :database => "app_dev",
  :socket => "/tmp/mysql.sock"
)

Cronからコマンドラインで実行するものなので、環境を引数で指定できるようにするといいかもしれない。

まあとりあえずこんな風に作ったが、他の人はどういうやり方をしているんだろうなぁ。

参考

Rubyist Magazine – プログラマーのための YAML 入門 (初級編)
Railsレシピ

追記

そいやBackgrounDRbってプラグインがあるって聞いたっけ。
気が向いたらフォローしてみよう。

追記2

script/runnerを使ってやる方法がとりあえず普通みたいです。
RailsアプリでActiveRecordを使ったバッチ処理 その2書きました。

追記3

RailsアプリでActiveRecordを使ったバッチ処理 その3書きました。
みんないろいろ工夫している模様。