[Ruby on Rails] seed_fu を環境毎に分ける

Tadashi Shigeoka ·  Wed, January 30, 2013

Ruby on Rails で seed_fu のファイルを開発環境毎に分けてみました。

% ls -l db 
total 64
drwxr-xr-x  11 shigeoka  staff    374  1 29 20:10 fixtures/
drwxr-xr-x   3 shigeoka  staff    102 12 27 18:16 fixtures_development/
drwxr-xr-x   3 shigeoka  staff    102  1 30 18:07 fixtures_production/
drwxr-xr-x   3 shigeoka  staff    102  1 30 18:06 fixtures_staging/
drwxr-xr-x  76 shigeoka  staff   2584  1 29 20:10 migrate/
-rw-r--r--   1 shigeoka  staff  18269  1 29 20:10 schema.rb
-rw-r--r--   1 shigeoka  staff    343 12  4 23:32 seeds.rb

どの環境でも共通のデータは、普通に fixtures ディレクトリ以下に設置しています。

その他は、development, staging などでインポートしたいデータが微妙に違ってくるので、suffix に環境名を付けたディレクトリを作って分けました。

それぞれの環境のseedデータをインポートするには下記のように FIXTURE_PATH を指定してあげます。

% rake db:seed_fu FIXTURE_PATH=db/fixtures_development

そんでもって、development, stagingで共通のファイルは require で読み込むようにしています。

# db/fixtures_development/users.rb
require "#{Rails.root}/db/fixtures_staging/groups.rb"

こんな感じです。