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
でスキーマから初期データまで一発!