2

我的应用程序实际上是一个常量数据库表。它很大——它包含约 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
4

1 回答 1

3

好的,托尼霍普金森指向 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 或自动测试时重建表。

于 2012-08-23T23:26:14.357 回答