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