Mercurial > hg > soundsoftware-site
annotate lib/tasks/extract_fixtures.rake @ 1474:c4436fec34bf bug_494
Close obsolete branch bug_494
author | Chris Cannam |
---|---|
date | Sat, 10 Nov 2012 13:57:53 +0000 |
parents | cbb26bc654de |
children |
rev | line source |
---|---|
Chris@909 | 1 desc 'Create YAML test fixtures from data in an existing database. |
Chris@909 | 2 Defaults to development database. Set RAILS_ENV to override.' |
Chris@909 | 3 |
Chris@909 | 4 task :extract_fixtures => :environment do |
Chris@909 | 5 sql = "SELECT * FROM %s" |
Chris@909 | 6 skip_tables = ["schema_info"] |
Chris@909 | 7 ActiveRecord::Base.establish_connection |
Chris@909 | 8 (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name| |
Chris@909 | 9 i = "000" |
Chris@909 | 10 File.open("#{Rails.root}/#{table_name}.yml", 'w' ) do |file| |
Chris@909 | 11 data = ActiveRecord::Base.connection.select_all(sql % table_name) |
Chris@909 | 12 file.write data.inject({}) { |hash, record| |
Chris@909 | 13 # cast extracted values |
Chris@909 | 14 ActiveRecord::Base.connection.columns(table_name).each { |col| |
Chris@909 | 15 record[col.name] = col.type_cast(record[col.name]) if record[col.name] |
Chris@909 | 16 } |
Chris@909 | 17 hash["#{table_name}_#{i.succ!}"] = record |
Chris@909 | 18 hash |
Chris@909 | 19 }.to_yaml |
Chris@909 | 20 end |
Chris@909 | 21 end |
Chris@909 | 22 end |