我想用扫地机使碎片过期。执行清扫器回调,但对 expire_fragment 的调用什么也不做,因为(我假设)cache_configured?返回零。缓存已配置,并且正在我的模板中创建和使用片段(在日志中进行了验证)。我究竟做错了什么?
应用程序.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]
生产.rb
config.action_controller.perform_caching = true
拍卖清扫器.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?为 nil,perform_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?