Ruby on rails 3 如何使一个非常大的常量表可用于测试?

Ruby on rails 3 如何使一个非常大的常量表可用于测试?,ruby-on-rails-3,rspec,Ruby On Rails 3,Rspec,我的应用程序实际上是一个常量数据库表。它很大,包含约125K行14个字段,重建大约需要5分钟 对于开发和生产工作,我将重建作为数据库种子的一部分。但是对于测试,我不想每次运行测试都要等待五分钟 在这种情况下,您建议采用什么技术或工作流程?(如果可能的话,一种方法可能是在测试期间将development_constant_table别名为test_constant_table。) 更新 我应该提到,db/seeds.rb文件如下所示: # file: db/seeds.rb require "#{

我的应用程序实际上是一个常量数据库表。它很大,包含约125K行14个字段,重建大约需要5分钟

对于开发和生产工作,我将重建作为数据库种子的一部分。但是对于测试,我不想每次运行测试都要等待五分钟

在这种情况下,您建议采用什么技术或工作流程?(如果可能的话,一种方法可能是在测试期间将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

好的,托尼·霍普金森指向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或autotest时都重新生成该表。

您能否澄清“重新生成”是什么?表是通过编程生成的,还是从YML(或其他)种子文件中读取的?看看这个,看起来您需要为生产和开发进行种子设定,并且只有在表为空时才在测试中进行。我自己对这个东西很陌生,但我也对一个slution感兴趣。这个表是通过编程构建的。(FWIW,它本质上是一个日历,将DateTime映射到一周中的某一天、假日、周末和其他有用的字段。)@TonyHopkinson:这正是我需要的指针。我已经在下面的答案上做了扩展。有一件额外的、有用的事情要知道that@TonyHopkinson当前位置为了弄清楚您引用的SO帖子中到底发生了什么,需要进行一些挖掘,但最终答案是肯定的。你值得表扬。你做了工作,所以接受你的回答。除了得到这些要点,其他有类似问题的人(在某个时候几乎可以肯定是我)将直接得到已知的工作解决方案。