1 # -*- encoding: utf-8 -*-
\r
5 namespace :fixtures do
\r
7 desc 'Create FactoryGirl test fixtures from data in an existing database.
\r
8 Defaults to development database. Set RAILS_ENV to override.'
\r
9 task :dump => :environment do
\r
10 sql = "SELECT * FROM %s"
\r
11 ActiveRecord::Base.establish_connection(Rails.env)
\r
12 Manifest.manifest.items.each do |n, v|
\r
13 model_man = Manifest.manifest.models[n]
\r
14 model = model_man.classify
\r
15 data = ActiveRecord::Base.connection.select_all(sql % model.table_name)
\r
17 # -*- encoding: utf-8 -*-
\r
18 FactoryGirl.define do
\r
20 <% data.each do |row| -%>
\r
21 factory <%= ':' + n + c.succ! -%>, :class => <%= model.to_s -%> do |i|
\r
22 <% model_man.attributes.each do |name, attr| -%>
\r
23 <% next if name == 'id' -%>
\r
24 <% next if name == 'created_at' -%>
\r
25 <% next if name == 'updated_at' -%>
\r
26 i.<%= name -%> <%= case attr.type
\r
28 "'" + row[name].to_s.gsub("'", "\\\\\\\\'") + "'"
\r
30 row[name] ? "DateTime.parse('" + row[name] + "')" : 'nil'
\r
39 erb = ERB.new(tpl, nil, '-')
\r
40 File.open("#{Rails.root}/spec/factories/#{n}.rb", 'w') do |f|
\r
41 f.puts erb.result(binding)
\r