extract_fixtures.rake
22 lines
| 863 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| | ||||
|
r5440 | # 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 | ||||
|
r10 | }.to_yaml | ||
end | ||||
end | ||||
|
r5440 | end | ||