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