牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Rails3 で初期データ投入する時に seeds.rb を使い rake db:setup もしくは rake db:seed などで erb の タグを書いた yaml を指定したディレクトリからすべて読み込む場合のメモ

(Rails3.2.6, Ruby1.9.3)

db/fixtures に hoge.yml を置いた場合

  • db
    • seeds.rb
    • fixtures
      • hoge.yml
      • fuga.yml
      • :

db/fixtures の yml を全て読み込む。
それから yml に erb のタグを書いても読み込むようにする。
ex:

hoge:
  date: <% Date.today %>

seeds.rb

ext = "yml"
filepaths = Dir.glob(File.dirname(__FILE__) + "/fixtures/*." + ext)
filepaths.each do | filepath |
  fixture = File.read("#{filepath}")
  data = YAML.load(ERB.new(fixture).result)
  tablename = File.basename filepath,  "." + ext
  modelname = tablename.classify
  (modelname.constantize).create(data.values)
end

データ投入

新たにデータベース、テーブルを作成し、初期データを投入の場合
rake db:setup
データベースに読み込む場合
rake db:seed