Rails を使用しない ActiveRecord + Migrate

メモ代わり。

ActiveRecord

require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection(
  :adapter  => 'postgresql',
  :host     => 'localhost',
  :username => 'foo',
  :database => 'baz',
  :encoding => 'utf8'
)

class User < ActiveRecord::Base
end

User.find(:all).each do |u|
  p u
end

Migrate

Rakefile

ほんとは設定ファイルわけたほうがいいんだけどね

require 'rubygems'
require 'active_record'
require 'logger'

ActiveRecord::Base.establish_connection(
  :adapter  => 'postgresql',
  :host     => 'localhost',
  :username => 'foo',
  :database => 'baz',
  :encoding => 'utf8'
)

# 重要
ActiveRecord::Base.logger = Logger.new(STDOUT)

task :migrate do
  # 'migrate' は Rakefile から見た 001_xxx.rb 等がおいてあるディレクトリを相対指定
  ActiveRecord::Migrator.migrate('migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
end
Migrate file (001_xxx.rb)
# クラス名はファイル名の xxx と同等にする (これでハマった)
# 001_initialize_db.rb → InitializeDB etc.
class Initialize < ActiveRecord::Migration
  def self.up
  end
  def self.down
  end
end
Usage
rake migrate
rake migrate VERSION=0