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