2

私のアプリには、事実上定数データベース テーブルがあります。これは大きく、14 フィールドの最大 125,000 行を含み、再構築には約 5 分かかります。

開発および生産作業では、データベースのシード処理の一環として再構築します。しかし、テストのために、テストを実行するたびに 5 分間待ちたくありません。

この場合、どのようなテクニックまたはワークフローを提案しますか? (可能であれば、1 つの方法として、テスト中に 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 に答える