How to use seed.rb to selectively populate development and/or production databases?

DuArme picture DuArme · Dec 28, 2011 · Viewed 22.8k times · Source

I am using seed.rb to populate both my development and production database. I usually populate the first with dummy data and the latter with the real minimal data that my app needs to run (e.g. the first user and so on).

How can I specify in seed.rb for what environment each data is?

Given that I know "group" to be a Gemfile method, I'd like to achieve the same behavior for seed.rb.

E.g. I'd like to write something like this in my seed.rb:

group :development do 
  # development specific seeding code
end

group :production do 
  # production specific seeding code
end

# non-specific seeding code (it always runs) 

This to be able to call both the development-specific and the non-specific code with

$ rake db:seed

And to call both the production-specific and the non-specific code with:

$ rake db:seed RAILS_ENV=production 

Thank you

Answer

cam picture cam · Dec 28, 2011

seeds.rb is just a plain ruby file, so there are several ways you could approach this. How about a case statement?

# do common stuff here

case Rails.env
when "development"
   ...
when "production"
   ...
end