0

Ruby on Rails 2.3.8 プロジェクトがあり、データはほぼ完全に読み取り専用です。ステージング データベース (本番データベースのコピー) を使用する受け入れテストを作成したいと考えています。

そのため、機能やシナリオの前後でトランザクションやデータベース テーブルの切り捨てを使用したくありません。

出来ますか?

4

1 に答える 1

0

私の解決策は、features/support/env.rb で DatabaseCleaner をトランザクション クリーニング戦略に切り替えることでした。

if defined?(ActiveRecord::Base)
  begin
    require 'database_cleaner'
    DatabaseCleaner.strategy = :transaction
  rescue LoadError => ignore_if_database_cleaner_not_present
  end
end

そして、features/support/database_cleaner_patch.rb を追加して DatabaseCleaner にモンキー パッチを適用します。

module DatabaseCleaner::ActiveRecord
  #for now we will disable transactions 
  class Transaction

    def start
    end

    def clean
    end
  end
end

プロジェクトには 3 つのデータベースがあり、クロスデータベース クエリを使用しているため、トランザクションを使用できません。それ以外の場合は、DatabaseCleaner にモンキー パッチを適用しません。

于 2010-11-15T14:48:56.740 に答える