[Ruby on Rails] seed データの追加や管理をカンタンにしてくれる seed-fu の使い方
- 2012 12/4
- カテゴリー : Ruby on Rails
- コメントを書く
Ruby on Rails で seed データの追加や管理をカンタンにしてくれる seed-fu gem が便利なのでご紹介します。
- mbleigh/seed-fu: Advanced seed data handling for Rails, combining the best practices of several methods together.
- seed-fu | RubyGems.org | your community gem host
使い方は db/fixtures 以下に users.rb とかいうファイル名で、簡単には下記のような感じで書きます。
db/fixtures/users.rb
User.seed do |s| s.id = 1 s.login = "jon" s.email = "[email protected]" s.name = "Jon" end User.seed do |s| s.id = 2 s.login = "emily" s.email = "[email protected]" s.name = "Emily" end |
全ての seed ファイルからインポートするには、単に
rake db:seed_fu |
を実行すればよいです。
ファイルやモデル別にロードするには、下記のような感じで rake タスクを実行する。
rake db:seed_fu FIXTURE_PATH=path/to/fixtures rake db:seed_fu FILTER=users,articles |
当然だが Ruby コードが書けるので、こんな感じに CSV から DB へインポートみたいなことも書ける。
db/fixtures/users.rb
require 'csv' csv = CSV.read('db/fixtures/users_master.csv') csv.each_with_index do |user, i| # skip a label row next if i === 0 name = user[0] age = user[1].to_i User.seed do |s| s.id = i s.name = name s.age = age end end |
地味に便利ですね。