スイーパーでフラグメントを期限切れにしたい。スイーパー コールバックは実行されますが、expire_fragment への呼び出しは何もしません。nil を返します。キャッシングが構成され、フラグメントが作成され、テンプレートで使用されています (ログで確認しました)。私は何を間違っていますか?
アプリケーション.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
オークション_スイーパー.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?