A modern Rails gem to generate seed files from your existing database data.
Perfect for creating seeds from production data, sharing database states across teams, or migrating data between environments.
While similar gems exist, DbSeeder offers several advantages:
- ✅ Modern & Maintained - Built for Rails 7+, actively maintained
- ✅ Memory Efficient - Batch processing for large tables (won't crash on millions of records)
- ✅ SOLID Architecture - Clean, testable, maintainable code
- ✅ Flexible Configuration - Customize output path, excluded tables, batch size, and more
- ✅ Well Tested - Comprehensive test suite with 100% core functionality coverage
| Feature | DbSeeder | seed_dump | Faker |
|---|---|---|---|
| Purpose | Export real data | Export real data | Generate fake data |
| Rails 7+ | ✅ Yes | ✅ Yes | |
| Batch Processing | ✅ Yes | ❌ No | N/A |
| Configurable | ✅ Yes | Limited | N/A |
| Use Case | Production → Seeds | Production → Seeds | Testing/Development |
Use DbSeeder when: You need to export real database records to seed files
Use Faker when: You need to generate fake/random data for testing
Add to your Gemfile:
gem 'db_seeder'Then execute:
bundle installGenerate seeds for all tables:
rake db:seed:generateGenerate seeds for specific table:
rake db:seed:generate TABLE=usersCreate an initializer config/initializers/db_seeder.rb:
DbSeeder.configure do |config|
config.output_path = "db/seeds"
config.excluded_tables = %w[schema_migrations ar_internal_metadata sessions]
config.batch_size = 1000
config.format = :ruby
endDbSeeder.generate("users")
DbSeeder.generateoutput_path: Directory for generated seed files (default: "db/seeds")excluded_tables: Tables to skip (default: schema_migrations, ar_internal_metadata)batch_size: Records per batch (default: 1000)format: Output format (default: :ruby)
bundle install
bundle exec rspecBug reports and pull requests are welcome on GitHub at https://github.com/ClaudiaRojasSoto/db_seeder.
MIT License. See LICENSE.txt for details.