Chris@0: desc 'Create YAML test fixtures from data in an existing database. Chris@0: Defaults to development database. Set RAILS_ENV to override.' Chris@0: Chris@0: task :extract_fixtures => :environment do Chris@0: sql = "SELECT * FROM %s" Chris@0: skip_tables = ["schema_info"] Chris@0: ActiveRecord::Base.establish_connection Chris@0: (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name| Chris@0: i = "000" Chris@0: File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file| Chris@0: data = ActiveRecord::Base.connection.select_all(sql % table_name) Chris@0: file.write data.inject({}) { |hash, record| Chris@441: # cast extracted values Chris@441: ActiveRecord::Base.connection.columns(table_name).each { |col| Chris@441: record[col.name] = col.type_cast(record[col.name]) if record[col.name] Chris@441: } Chris@441: hash["#{table_name}_#{i.succ!}"] = record Chris@441: hash Chris@0: }.to_yaml Chris@0: end Chris@0: end Chris@441: end