2012-07-22 52 views
2

我正在嘗試在發佈新文章時使用清理程序清除主頁索引操作。當文章更新時,如何過期主頁緩存?

主頁緩存在開發環境中工作正常,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

是如何爲您的生產達利店配置? – phoet 2012-07-22 19:02:17

+0

你註冊了你的觀察員嗎? – apneadiving 2012-07-22 22:25:30

+0

@phoet - 我現在只在開發階段。 – Ben 2012-07-23 18:30:01

回答

4

兩個步驟,將溶液:

執行模型上的變化的控制器需要有清掃引用,而不是目標控制器,如上所示。在這種情況下,它是active_admin,所以我將其添加到我的admin/articles.rb文件(source)而不是家庭控制器。

controller do 
    cache_sweeper :article_sweeper 
end 

與控制器名稱需要一個斜槓

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

關於需要斜線的控制器的說明非常重要/有用。一直在追逐我的尾巴一個小時!感謝分享。 – Pete 2015-05-19 21:46:55