如何更新文章时如何使主页缓存失效?

时间:2012-07-22 11:57:36

标签: ruby-on-rails-3 caching memcached activeadmin sweeper

我正在尝试使用清扫工具在发布新文章时清除主页索引操作。

主页缓存在开发环境中正常工作,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)。

1 个答案:

答案 0 :(得分:4)

解决方案的两个步骤:

执行模型更改的控制器需要具有清扫器参考,而不是如上所示的目标控制器。在这种情况下,它是active_admin,所以我将它添加到我的admin / articles.rb文件(source)而不是家庭控制器。

controller do
  cache_sweeper :article_sweeper
end

控制器名称需要斜杠

expire_action(:controller => '/home', :action => 'index')