/ Published in: Ruby
I didn't create this but I use it all the time. Just drop it in lib/tasks/fixtures.rake
Expand |
Embed | Plain Text
namespace :db do namespace :fixtures do desc 'Create YAML test fixtures from data in an existing database. Defaults to development database. Set RAILS_ENV to override.' task :dump => :environment do sql = "SELECT * FROM %s" skip_tables = ["schema_info"] ActiveRecord::Base.establish_connection(RAILS_ENV) (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name| i = "000" File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file| data = ActiveRecord::Base.connection.select_all(sql % table_name) file.write data.inject({}) { |hash, record| hash["#{table_name}_#{i.succ!}"] = record hash }.to_yaml end end end end end
Comments
Subscribe to comments
You need to login to post a comment.

For Rails 3, change:
RAILSENV to Rails.env.tos #This variable is now a "StringInquirer" and will throw an error when you try to "symbolizekeys" on it. RAILSROOT to Rails.root #Just to get in the Rails 3 style
Cheers! Thanks for the snippet. The AR_FIXTURES gem does similar things by extending active record, but this is less invasive (by far) and great for those of us who just need translations or some other handy data dumped into a fixture.