Rails 2.3.4から入ったrake db:seed。所謂マスターデータを入れる処理はmigrationじゃなくてこっちにしようという話。マスターって名前も業界ではよく使うけど定義が曖昧だし、モデリングには有害なんじゃないかってぐらいだけどそういうデータにどんな名前をつければ良いのか思いつかない。seedもあまりしっくりこないけど何かに統一されたのはうれしい。

今まではみんなrake db:seedに該当するようなものを思い思いに作ってて、Redmineでrake redmine:default_data。RadiantCMSはrake db:bootstrap(両方うろ覚え)。

db/seeds.rbは単に実行されるというだけで特に決まりはないのでとりあえずdb/seedsディレクトリを作って下記のような感じにしておいた。

db/seeds.rb:

require 'active_record/fixtures'

Fixtures.create_fixtures "db/seeds", :docs
Fixtures.create_fixtures "db/seeds", :users

それまではdb/fixturesディレクトリとrake db:load_defaultとかやってたけど、seedsの方が素敵な名前。これからは、

rake db:reset
でスキーマから初期データまで一発!

Comments


Option