単体で (Rails をつかわずに) AR::Migration をつかうメモ
(ほぼ)最小構成の例: (acts_as_versioned もふくめて)
# Rakefile
require "rubygems"
require "rake"
require "active_record"
namespace :db do
"Migrate database."
task :migrate do
require "db/connection"
ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
end
end# db/connection.rb
require "logger"
ActiveRecord::Base.establish_connection({
:adapter => "sqlite3",
:dbfile => "wiki.db",
})
ActiveRecord::Base.logger = Logger.new($stderr)
Dir.glob("model/*.rb") do |f|
require f
end# db/migrate/001_init.rb
class Init < ActiveRecord::Migration
def self.up
create_table :pages do |t|
t.column :version , :int
t.column :title , :text
t.column :body , :text
t.column :created_at , :datetime
t.column :updated_at , :datetime
end
Page.create_versioned_table
end
def self.down
Page.drop_versioned_table
drop_table :pages
end
end# model/page.rb
require "acts_as_versioned"
class Page < ActiveRecord::Base
acts_as_versioned
end
- AR::Migrator は undocumented なので変更される危険性がそれなりにあるかも ( # :nodoc: 指定)
- AR::Base.logger を設定しないと Migrator うごかないよ
Rack + SQLite な Wiki をつくろうとおもったけどなんかめんどくさくなってしまった……