--- /dev/null
+# -*- encoding: utf-8 -*-\r
+require 'erb'\r
+\r
+namespace :db do\r
+ namespace :fixtures do\r
+ \r
+ desc 'Create FactoryGirl test fixtures from data in an existing database. \r
+ Defaults to development database. Set RAILS_ENV to override.'\r
+ task :dump => :environment do\r
+ sql = "SELECT * FROM %s"\r
+ ActiveRecord::Base.establish_connection(Rails.env)\r
+ Manifest.manifest.items.each do |n, v|\r
+ model_man = Manifest.manifest.models[n]\r
+ model = model_man.classify\r
+ data = ActiveRecord::Base.connection.select_all(sql % model.table_name)\r
+tpl = <<-HD\r
+# -*- encoding: utf-8 -*-\r
+FactoryGirl.define do\r
+<% c = "000" -%>\r
+<% data.each do |row| -%>\r
+ factory <%= ':' + n + c.succ! -%>, :class => <%= model.to_s -%> do |i|\r
+<% model_man.attributes.each do |name, attr| -%>\r
+<% next if name == 'id' -%>\r
+<% next if name == 'created_at' -%>\r
+<% next if name == 'updated_at' -%>\r
+ i.<%= name -%> <%= case attr.type\r
+ when 'text'\r
+ "'" + row[name].to_s.gsub("'", "\\\\\\\\'") + "'"\r
+ when 'datetime'\r
+ row[name] ? "DateTime.parse('" + row[name] + "')" : 'nil'\r
+ else\r
+ row[name]\r
+ end %>\r
+<% end -%>\r
+ end\r
+<% end -%>\r
+end\r
+HD\r
+ erb = ERB.new(tpl, nil, '-')\r
+ File.open("#{Rails.root}/spec/factories/#{n}.rb", 'w') do |f|\r
+ f.puts erb.result(binding)\r
+ end\r
+ end\r
+ end\r
+ end\r
+end\r