26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/fixture_me.rb', line 26
def self.create_all_fixtures
fixtures_dir = "#{Rails.root}/tmp/fixtures/"
FileUtils.mkdir_p(fixtures_dir)
table_names = ActiveRecord::Base.connection.tables
model_names = Dir["#{Rails.root}/app/models/**/*.rb"].map {|f| File.basename(f, '.*').pluralize}
modelswithtables = table_names & model_names
modelswithtables.each do |table_name|
model = table_name.classify.constantize
if model.columns.any?{|c| c.name == 'created_at'}
sql = "SELECT * FROM #{table_name} ORDER BY created_at DESC"
else
sql = "SELECT * FROM #{table_name}"
end
File.open("#{fixtures_dir}#{table_name}.yml", "w") do |file|
objects = ActiveRecord::Base.connection.select_all(sql)
objects.each_with_index do |obj, i|
model.columns.each do |col|
if !col.null && obj[col.name].nil?
obj[col.name] = ''
end
end
file.write({"#{table_name}#{i}" => obj}.to_yaml.sub('---', ''))
file.write "\n"
end
end
puts "extracted #{table_name}"
end
end
|