diff lib/tasks/.svn/text-base/extract_fixtures.rake.svn-base @ 0:513646585e45

* Import Redmine trunk SVN rev 3859
author Chris Cannam
date Fri, 23 Jul 2010 15:52:44 +0100
parents
children cbce1fd3b1b7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/tasks/.svn/text-base/extract_fixtures.rake.svn-base	Fri Jul 23 15:52:44 2010 +0100
@@ -0,0 +1,24 @@
+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
\ No newline at end of file