Истечение срока действия контроллера от 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)
,