ブログトップ 記事一覧 ログイン 無料ブログ開設

みじんこ日記

2009-05-13

SequelでMigration

久しぶりにSequelを使おうと思ったら、メジャーバージョンアップしてた。(3.0.0)

どうやら、Sequel::Model#set_schemaでモデルに直接スキーマを記述して、#create_table!ってのはなくなってるようだ。

…と思ったら、この機能はPluginとして切り出されている様子。

sequel/plugins/schema.rb

テストコードや短いサンプルで使うだけで、プロダクションコードではMigrationを使え、とのこと。

Sequel::MigrationとSequel::MigratorというExtensionを使うと、ActiveRecord風のMigrationを行える。

実行環境

1.9.1でsqlite3-rubyがおかしかったのでやむなく1.8系…まだ1.9.1は使えないな

  • Sequel 3.0.0

マイグレーションの準備

# migration/001_create_tags.rb
class CreateTags < Sequel::Migration

  def up
    create_table :tags do
      primary_key :id
      text :name
    end
    # DBに委譲してるので、Sequel::Databaseのメソッドが使える
    # add_index :tags, :name
  end

  def down
    # remove_index :tags, :name
    drop_table :people
  end

end
# migration/002_create_posts.rb
class CreatePosts < Sequel::Migration

  def up
    create_table :posts do
      primary_key :id
      foreign_key :author_id, :table => :authors
      text :title
      timestamp :created_at
      timestamp :updated_at
    end
  end

  def down
    drop_table :posts
  end

end

マイグレーション適用

require 'sequel'
require 'sequel/extensions/migration'
DB = Sequel.connect('sqlite://test.db')
Sequel::Migrator.apply(DB, './migration')  # 現在から最新まで適用

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mizincogrammer/20090513/1242216878