Я хочу, чтобы фрагменты с истекшим сроком действия. Обратные вызовы уборщика выполняются, но вызовы expire_fragment ничего не делают, потому что (я предполагаю) cache_configured? возвращает ноль Кэширование настроено, фрагменты создаются и используются в моих шаблонах (проверено в логах). Что я делаю не так?
application.rb
config.cache_store = :mem_cache_store, "XXX.XXX.XXX.XXX", { # I use a real IP
:compress => true,
:namespace => "#{Rails.env}_r3"
}
config.active_record.observers = [:auction_sweeper, :address_sweeper]
production.rb
config.action_controller.perform_caching = true
auction_sweeper.rb
class AuctionSweeper < ActionController::Caching::Sweeper
observe Auction
def after_create(auction)
Rails.logger.info "AuctionSweeper.expire_details #{auction.id} #{cache_configured?.inspect}=#{perform_caching.inspect}&&#{cache_store.inspect}"
expire_fragment("auction/#{auction.reference_sid}")
end
end
В файлах журналов cache_configured? равно нулю, равно как и execute_caching и cache_store.
AuctionSweeper.expire_details 12732 nil=nil&&nil
Итак, я предполагаю, что мои фрагменты не устарели, потому что код expire_fragment гласит:
Файл actionpack / lib / action_controller / caching / fragments.rb, строка 87
87: def expire_fragment(key, options = nil)
88: return unless cache_configured?