無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

肥大化するseeds.rbをうまい具合に管理する

seeds.rb中でif~elsifしたり、rakeタスクを環境分用意するなど、剛の者もいるようですが、それはあんまりにも辛みを予感させてしまいます。

個人的に楽でオススメなのが、環境毎のdirを切って、その下に実処理書いたファイル配置し、requireでごそっと開始させる方法。

root
 └ db
    ├ seeds.rb
    ├ seeds/
          ├ development/
          │ ├ users.rb
          │ └ ...~.rb
          ├ production/

こんな感じ。

規模が小さいなら、environmentごとのdir切らずに、直接ファイルおいても良いかも。

db/seeds.rbにはこんな感じの処理書いておく

seed_files_root="#{Rails.root}/db/seeds/#{Rails.env}"

Dir.glob("#{seed_files_root}/**.rb").each{|file| 
  require file  if FileTest.file?(file)
}

これによって、起動した時の環境に合わせたdirから、Seedするファイルが読み込まれて処理されるようになります。

というメモ。