有没有办法从现有的模型生成Rails灯具?
问题描述:
我有一个没有测试的Rails 2.x应用程序。我可以手动写出测试,但有没有办法自动生成灯具?不用手工输入所有内容就太棒了。有没有办法从现有的模型生成Rails灯具?
我可以为所有模型运行脚本/再次生成,但一切已经存在,如果我正确理解生成器,我仍然需要输入所有属性。
我想过运行Rails的控制台和做例如...
>> y VendorUser.all.rand
这会给我一些YAML所有的属性,但他们会出故障,它仍然是相当耗时耗时。
任何人都可以提出更有效的选择吗?
答
一般
我不考虑使用夹具一个好主意,但在这里不言而喻
desc "extracting data for fixtures"
task :extract_fixtures => :environment do
sql = "SELECT * FROM %s"
skip_tables = ["schema_info","schema_migrations"]
ActiveRecord::Base.establish_connection
(ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
i = "000"
File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file|
data = ActiveRecord::Base.connection.select_all(sql % table_name)
file.write data.inject({}) { |hash, record|
hash["#{table_name}_#{i.succ!}"] = record
hash
}.to_yaml
end
end
end
我知道有人会说:“不使用固定装置。”我只知道它!我无法与工厂打交道。我最后一次尝试使用它们,我在这里花了几个小时试图理清奇怪的问题,从未达到解决方案。灯具像HTML表格:道德和哲学上错误,但100%可靠。谢谢。你的解决方案看起来不错 – Ethan 2011-05-12 00:27:35
@Ethan IMO和两者之间总是存在妥协。它们不是相互排斥的。理想情况下,我会写我的项目,所以它不依赖于特定的行,但每隔一段时间,夹具可能是唯一的方法。特别是在传统项目上。 – thekingoftruth 2013-05-01 07:54:50