Я написал задание cron для обновления некоторых кэшированных значений в фоновом режиме (вместо того, чтобы делать это, пока пользователь ждет). У меня есть сценарий, который запускает это задание cron, а затем читает кеш, чтобы убедиться, что значения установлены правильно.
Проблема в том, что Rails.cache.read("key")
возвращает "Cache read: key\n"
, а не значение, и если я отлаживаю и проверяю Rails.cache
, я получаю возвращенное ActiveSupport::Cache::BlackHoleStore
- плохой знак.
Это, конечно, имеет смысл, потому что в мой cucumber.env
включено следующее:
config.action_controller.perform_caching = false
require File.join(RAILS_ROOT, 'lib', 'black_hole_store.rb')
config.cache_store = :black_hole_store
Что я хочу, так это переопределить это во время выполнения — у нас есть около тысячи сценариев, и это единственный, для которого требуется активный кеш. Я безуспешно пробовал следующее из приглашения отладчика:
(rdb:1) ActionController::Base.perform_caching = true
true
(rdb:1) ActionController::Base.perform_caching
true
(rdb:1) Rails.cache
#<ActiveSupport::Cache::BlackHoleStore:0x101b6dc60 @logger_off=false>
(rdb:1) ActionController::Base.cache_store = :memory_store
:memory_store
(rdb:1) Rails.cache
#<ActiveSupport::Cache::BlackHoleStore:0x101b6dc60 @logger_off=false>
Кто-нибудь знает, как это сделать?