DatabaseCleaner:有没有一种方法只能在首次访问数据库时进行清理

时间:2019-03-13 11:41:30

标签: ruby-on-rails rspec database-cleaner

我目前正在使用:

RSpec.configure do |config|
  config.before(:suite) do
    DatabaseCleaner[:active_record].clean_with :truncation
  end
end

每次我运行rspec时都会截断所有表。现在,我想知道是否有一种方法可以指示DatabaseCleaner仅在首次访问数据库时才调用清理策略。

结果是,当我运行一个不访问数据库的规范时,就不会被截断(并且节省了数十秒的宝贵时间)

1 个答案:

答案 0 :(得分:0)

我从未听说过这种模式,但是您可以检查:transaction https://github.com/DatabaseCleaner/database_cleaner#what-strategy-is-fastest策略,以便在运行规格时查看数据库。

如果您需要坚持截断,请尝试 DatabaseCleaner.strategy = :truncation, {:pre_count => true} https://github.com/DatabaseCleaner/database_cleaner#additional-activerecord-options-for-truncation,因为这不会尝试截断空的表。