На самом деле нет надежного способа убрать после форс-тиши. Но вы можете выполнить очистку перед запуском:
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with :truncation
end
end
Если вы беспокоитесь о производительности, вы можете сделать что-то вроде этого:
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with :truncation if File.exists?('tmp/spec_db_might_be_dirty')
FileUtils.touch('tmp/spec_db_might_be_dirty')
end
config.after(:suite) do
DatabaseCleaner.clean_with :truncation
FileUtils.rm('tmp/spec_db_might_be_dirty')
end
end
Специальный файл «маркера» будет создан в начале пакета и останется там, если принудительное завершение произойдет до того, как DatabaseCleaner выполнит свою работу.
Если это не принудительное завершение - оно будет удалено в after
ловушке.