« 1Fの天井から雨漏りなう(泣) | トップページ | Ruby on Railsアプリで2つめのDBを使う。 »

Ruby on Railsでコンソールアプリを作る。

MVCだって言うのなら、GUI以外のViewだって使えないとおかしいと思うのさね。

RonRはWeb GUIが前提になっているけど、アクセスログ管理アプリとか一括データ登録機能とかを作るとWebではなくコンソールから操作したいことが多々ある。

wgetとかw3mでWeb GUIにアクセスする方法もあるけど、今ひとつイケてないので。Rubyコードで済ませる方法をメモっておく。

  • config/bootをrequireする。
  • config/environmentをrequireする。
  • rubygemsをrequireする。
  • active_record、および使用するmodelをrequireする。
  • -I $RAILS_ROOT/app/modelsを指定してrubyを実行。

以上でRuby on Railsとして”普通に”DBアクセスする環境は整う。

DB環境の切り替えは、RAILS_ENV環境変数で指定する。ActiveRecord::Base.established_connectionに直接指定する方法もあるけど、ハードコーディングになって扱いが面倒なので試しておらず、故によくわからん。

例:

#!/usr/bin/ruby -I app/models

require 'config/boot'
require 'config/environment'
require 'rubygems'
require 'active_record'
require 'apache_log'

STDIN.read.each do |line|
  line.chomp!
  record = ApacheLog.new
  record.log_text = line
  raise 'DB access error!' if not record.save
end

なお、アクセスログみたいに巨大なファイルをSTDIN.read.eachでさばこうとすると最初に全部メモリに乗っけてしまうようなので、巨大な敵を撃つときはSTDIN.getsでnil判定した方が良いようです。

    

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28934/53288061

この記事へのトラックバック一覧です: Ruby on Railsでコンソールアプリを作る。:

コメント

コメントを書く