我的应用程序实际上是一个常量数据库表。它很大 - 它包含大约125K行的14个字段 - 重建它需要大约五分钟。
对于开发和生产工作,我重建作为播种数据库的一部分。但是对于测试,我不想每次运行测试时等待五分钟。
在这种情况下,您会建议使用哪种技术或工作流程? (一种方法可能是在测试期间将development_constant_table别名为test_constant_table,如果可能的话。)
我应该提一下db / seeds.rb文件看起来像这样:
# file: db/seeds.rb
require "#{Rails.root}/db/time_dimension_loader"
TimeDimensionLoader.perform_lengthy_table_creation
答案 0 :(得分:3)
好的,Tony Hopkinson指向stackoverflow.com/questions/1574797/的指针指明了方向。
首先,创建一个rake文件:
# lib/tasks/test_seed.rake
namespace :db do
namespace :test do
task :prepare => :environment do
Rake::Task["db:seed"].invoke
end
end
end
然后,当您调用标准rake db:test:prepare
时,您的新rake任务将在标准db:test:prepare
运行后执行。所以是的,运行rake任务需要一段时间,但此后表存在(并且仍然存在),因此每次运行RSpec或自动测试时都不必重建表。