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

2007-09-08
2011-01-08
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

script/runnerを使うといいようだ。
これは引数の文字列をRubyスクリプトとして解釈し、Rails環境で実行するというもの。

script/runnerによって

ruby script/runner 'p Onsen.count'

といった具合にコマンドラインからモデルを使った処理を実行できる。
コントローラは使えません。(でした)

対象にする環境は-eオプションを使ってdevelopment,production,testをそれぞれ指定できる。
何も指定しない場合のデフォルトはdevelopment。
ゆえにproduction環境で実行したければ以下のごとし。

ruby script/runner -e production 'p Onsen.count'

ちなみに多少複雑なバッチ処理は当然ファイルに書いたスクリプトから読ませたい。
しかしそのために普通にパイプとか使っても駄目だったりする。

解は以下参照。

ActiveRecord と ActiveSupport を使ってコマンドラインアプリを作る - ma2の日記

ruby script/runner 'eval(IO.readlines("hoge.rb").join)'

それにしてもやっぱhogeは基本。
自分もhoge.rbでファイルから実行するテストをしていたので、サンプルコードまんま実行できたw

追記

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

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。