A good piece of code I found to solve this problem is the rake task from Jesse Newland:
http://snippets.dzone.com/posts/show/3393
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(:development) (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name| i = "000" File.open("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
After you get the exported fixtures in YAML, you can simply run some regular expressions to format them correctly for the seed file. This would probably be a good piece of code to use as the basis for building a rake task for exporting a seed file.
John chapin
source share