読者です 読者をやめる 読者になる 読者になる

ActiveRecordをRails抜きの単品で使う

ruby rails

知らない人もいるかもしれませんが、 Rails で使われている ORマッパーである ActiveRecord は、Rails からでなくても単品で動きます。
ActiveRecord はとても簡単で便利なので、 Rails 使うまでもないちょっとした日常のスクリプトでもどんどん使いましょう。
たとえば

CREATE TABLE foods (
  id INT NOT NULL PRIMARY KEY AUTOINCREMENT,
  name VARCHAR(100) NOT NULL UNIQUE,
  price INT NOT NULL
);

と書いたファイル tables.sqlite を用意して、

$ sqlite3 test.db < tables.sqlite

という感じで DB を作ります。
そしたら、こう。

require 'active_record'

base_dir = File.dirname(__FILE__)
ActiveRecord::Base.establish_connection(
  :adapter => "sqlite3",
  :database => File.join(base_dir, 'test.db')
)

class Food < ActiveRecord::Base
  validates_uniqueness_of :name
end

これを db.rb として保存したら、以下のような感じで普通に使えます。

require 'db'

# 追加するとき
food = Food.new
food.name = 'apple'
food.price = 100
food.save

# 取り出すとき
Food.find(:all).each do |f|
  puts "#{f.name} is #{f.price} yen."
end

検証環境は ruby 1.9.1 + activerecord 2.3.2 です。
ruby 1.9 系でもちゃんと動くのでどんどん使いましょう。