除非手动调用,否则清扫器无法正常工作,发生了什么?
我有以下设置:一个名为Categories的模型。 使用ActiveAdmin管理这些类别。 我想使用页面缓存来缓存类别。
这就是我设置app / admin / categories.rb的方法
ActiveAdmin.register Category do controller do cache_sweeper :category_sweeper end end
这是我的清扫工:
class CategorySweeper 'categories', :action => 'index', :format => 'json' end end
这是我的控制器:
class CategoriesController < ApplicationController caches_page :index cache_sweeper :category_sweeper respond_to :json def index @categories = Category.all respond_with(@categories) end def show CategorySweeper.instance.expire_cache(@category) respond_with('manually sweeped!') end end
因此,想法是当活动管理员发生变化时,应该调用清扫器。 我设置了debug.log并certificate它正常工作。 但由于某种原因,缓存不会过期!
但是,如果我做show动作(即转到/categories/1.json然后我的手动扫地机开始并且它工作正常)。 那么为什么扫地机只在我调用它时才工作,而不是在管理员发生变化时?
在此先感谢, – 大卫
您的ActiveAdmin
控制器位于不同的命名空间,请参阅此 SO问题。
不久:
将斜杠添加到缓存过期url代码中:
def expire_cache(category) expire_page :controller => '/categories', :action => 'index', :format => 'json' end