db/seeds.rb

2009/06/08

一月前ほどの記事だが、Ryan's Scrap の What's New in Edge Rails: Database Seeding に、Rails 3.0 では db/seeds.rb という新しいファイルが登場すると書いてある。

これの目的は、データベースのポピュレーション (population) である。

類似の概念に「マイグレーション (migration)」というのがあって、Rails の世界では、データベースの構造(スキーマ)を変更することを指す。こちらは、db/migrate ディレクトリの下にある Ruby スクリプトで行う。

他方、db/seeds.rb は、データベースにデータを投入する。例えば、初期の管理者アカウントを初めから用意しておきたい場合に使用する。

これまではその種のコードはマイグレーションスクリプト内に記述するしかなかったが、気持ちが悪いと感じていたのは私だけではあるまい。

db/seeds.rb は、例えば、こんな感じの普通の Rails スクリプトである:

Administrator.create(:name => 'root', :password => '')

専用の Rake タスク db:seeds も用意されている。

地味だが、私はこういう種類の改善が大好きである。Rails 3.0 に向かって世の中は着実に進んでいるのだ。

なお、Ryan も書いているように、この新しい仕組みの目的はテストフィクスチャの代替ではない。アプリケーションを実行するために最低限必要となるデータセットの投入だけに限定して利用すべきである。
--
黒田