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') # 現在から最新まで適用
- 24 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=ENY&q=rack+logger ファイル&btnG=検索&lr=lang_ja
- 22 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=アベニーパファー&start-index=4&adpage=3&mode=02
- 19 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla:ja:official&hs=t6l&num=50&q=git+すべて+表示+管理下&btnG=検索&lr=lang_ja
- 12 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_ja&q=CABARC+signtool
- 11 http://reader.livedoor.com/reader/
- 10 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/mizincogrammer/20090513/1242216878
- 10 http://www.google.co.jp/search?q=sequel+migrate&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 8 http://ke-tai.org/blog/2008/09/08/phoneid/
- 8 http://www.google.co.jp/search?q=Sequel+Migration&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 7 http://twitter.com/