Uniвсячина

понемножку о Linux и программировании

Как отключить кэш при тестировании Rails-приложений

Столкнулся с проблемой в одном из разрабатываемых Rails-приложений. Интеграционные тесты в cucumber проходят по одному, но при запуске всей кучей, начинают падать в failed.

Проблема оказалась в кэшировании данных через Rails.cache. Так как, по-моему разумению, в окружении test всякое кэширование должно быть отключено, то пришлось наваять “заглушку” для кэша:

config/environments/test.rb:

config.cache_store = :dummy_store

lib/dummy_store.rb:

class DummyStore < ActiveSupport::Cache::Store

  def initialize
  end

  def read(name, options = nil)
    super
  end

  def write(name, value, options = nil)
    super
  end

  def delete(name, options = nil)
    super
  end

  def delete_matched(matcher, options = nil)
    super
  end
end

Comments