extract_fixtures.rake
22 lines
| 841 B
| text/x-ruby
|
RubyLexer
|
r7624 | 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 | ||||