当一篇新文章发布时,我正试图使用清理器来清除主页索引操作。
主页缓存在开发环境中运行良好,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)。
解决方案的两个步骤:
对模型执行更改的控制器需要具有清扫器参考,而不是如上所示的目的地控制器。在这种情况下,它是active_admin,所以我将它添加到我的admin/articles.rb文件(源代码)中,而不是家庭控制器中。
controller do
cache_sweeper :article_sweeper
end
控制器名称需要斜线
expire_action(:controller => '/home', :action => 'index')