我正在尝试使用清扫工具在发布新文章时清除主页索引操作。
主页缓存在开发环境中正常工作,1分钟后过期。但是,保存文章时,不会触发清扫程序操作。
class HomeController < ApplicationController
caches_action :index, :expires_in => 1.minute
cache_sweeper :article_sweeper
def index
@articles = Article.published.limit(5)
end
end
class ArticleSweeper < ActionController::Caching::Sweeper
observe Article
def after_update(article)
expire_action(:controller => 'home', :action => 'index')
end
end
要么我在某个地方出错了,要么使用不同的方法来使主页缓存失效。
我的应用使用ActiveAdmin更新文章,Dalli用于Memcache(因为我将使用Heroku)。
答案 0 :(得分:4)
解决方案的两个步骤:
执行模型更改的控制器需要具有清扫器参考,而不是如上所示的目标控制器。在这种情况下,它是active_admin,所以我将它添加到我的admin / articles.rb文件(source)而不是家庭控制器。
controller do
cache_sweeper :article_sweeper
end
控制器名称需要斜杠
expire_action(:controller => '/home', :action => 'index')