地方でリモートワーク in Iwate

東京の受託開発会社でリモートワークしてます。

seed_fuでデータベースからseedデータを作成するrakeタスクを作った(動的対応)

スポンサーリンク

seed_fuでデータベースからseedデータを作成するrakeタスクを作りました。(動的対応)

作成したタスクがこれです。

# lib/tasks/seed_fu_generator.rake

namespace :seed_fu_generator do
  desc 'generate seed data from databases (env table_name is required).'
  task table_name: :environment do
    SeedFu::Writer.write("db/fixtures/#{Rails.env}/seed_fu_generator_#{ENV['TABLE_NAME']}.rb", class_name: ENV['TABLE_NAME'].classify) do |writer|
      ENV['TABLE_NAME'].classify.constantize.order(:id).find_each do |object|
        writer << object.attributes.except("created_at", "updated_at")
      end
    end
  end
end

実行するには下記のようにテーブル名を指定します。

% rake seed_fu_generator:table_name TABLE_NAME=admin_users

参考にさせていただいたサイトはテーブル名決め打ちのrakeタスクだったので、rakeに渡す環境変数でテーブル名を動的対応にしました。 コンソールで叩きながら、挙動を確認して実行しました。

railsで初期データを入れる(seed-fuの使い方) - Qiita