DatabaseCleaner: есть ли способ очистки только при первом доступе к базе данных - PullRequest
2 голосов
/ 13 марта 2019

В настоящее время я использую:

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

, который усекает все мои таблицы каждый раз, когда я запускаю rspec.Теперь мне интересно, есть ли способ дать указание DatabaseCleaner вызывать чистую стратегию только при первом обращении к базе данных.

В результате, когда я запускаю одну спецификацию, которая не обращается к базе данных, не будет усечения (и сохраняются десятки драгоценных секунд)

1 Ответ

0 голосов
/ 13 марта 2019

Я никогда не слышал о таком режиме, но вы можете проверить стратегию :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, так как это не приведет к усечению пустых таблиц.

...