Dump To Seed is a Rails plugin that adds a rake task named db:seed:dump
.
It allows you to create seed data files from the existing data in your database.
fork from https://github.com/rroblak/dump_to_seed
Add it to your Gemfile with:
gem 'dump_to_seed'
Or install it by hand:
$ gem install dump_to_seed
Dump all data directly to db/seeds.rb
:
Dump the data into a separate file for each table. e.g. db/seeds/users.rb
, db/seeds/products.rb
...
$ rails db:seed:dump
Result:
# frozen_string_literal: true
load(Rails.root.join('db','seeds','users.rb'))
load(Rails.root.join('db','seeds','products.rb'))
db/seeds/users.rb
:
# frozen_string_literal: true
User.insert_all!([
{ password: "123456", username: "test_1" },
{ password: "234567", username: "test_2" }
])
db/seeds/products.rb
:
# frozen_string_literal: true
Product.insert_all!([
{ category_id: 1, description: "Long Sleeve Shirt", name: "Long Sleeve Shirt" },
{ category_id: 3, description: "Plain White Tee Shirt", name: "Plain T-Shirt" }
])
config/initializers/dump_to_seed.rb
:
SeedDump.configure do |config|
config.deny_tables = [/secure_*/, 'credit_cards']
config.filter_colums = {
users: {
email: -> { "#{SecureRandom.uuid}@example.com" },
token: -> {}
}
}
config.table_class_mappings = {
admin_staff: 'Admin::Staff'
}
end