Истечение срока действия контроллера от Sweeper не работает

Наличие контроллера, обрабатывающего рендеринг больших XML-каналов

module Spree
  class FeedsController < Spree::StoreController
    ...

    caches_action :products_out
    cache_sweeper FeedSweeper

    # XML feed in format of `xxxxxxx.com'
    def products_out
      @products = Product.all
      respond_to do |format|
        format.xml
      end
    end
end

Сильфон - соответствующий подкласс подметальной машины:

module Spree
  class FeedSweeper< ActionController::Caching::Sweeper
    observe Product

    def after_update(product)
      # cache_configured? is nil, @controller is nil here, why ?
      expire_action(:controller => :feeds,
                    :action     => :products_out,
                    :format     => :xml)
    end
end

Выше Spree::FeedSweeper называется когда Spree::Product обновляется, однако кажется expire_action молча умирает, и кеш не становится недействительным.

Может кто-нибудь объяснить проблему? Еще лучше предложить какое-нибудь решение?

Благодарю.

1 ответ

Какую версию Rails вы используете? expire_action кажется устаревшим после Rails 3.2.14.

Может быть, вы можете попытаться найти ключ, а затем очистить его Rails.cache.delete(key),

Другие вопросы по тегам