OSDN Git Service

trunk moved from /trunk/redmine to /trunk
[redminele/redmine.git] / lib / tasks / extract_fixtures.rake
1 desc 'Create YAML test fixtures from data in an existing database.\r
2 Defaults to development database. Set RAILS_ENV to override.'\r
3 \r
4 task :extract_fixtures => :environment do\r
5   sql = "SELECT * FROM %s"\r
6   skip_tables = ["schema_info"]\r
7   ActiveRecord::Base.establish_connection\r
8   (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|\r
9     i = "000"\r
10     File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file|\r
11       data = ActiveRecord::Base.connection.select_all(sql % table_name)\r
12       file.write data.inject({}) { |hash, record|\r
13       \r
14       # cast extracted values\r
15       ActiveRecord::Base.connection.columns(table_name).each { |col|\r
16         record[col.name] = col.type_cast(record[col.name]) if record[col.name]      \r
17       }      \r
18       \r
19       hash["#{table_name}_#{i.succ!}"] = record\r
20       hash\r
21       }.to_yaml\r
22     end\r
23   end\r
24 end