다음과 같은 설정이 있습니다. 카테고리라는 모델. 이러한 범주는 ActiveAdmin을 사용하여 관리됩니다. 페이지 캐싱을 사용하여 범주를 캐시하고 싶습니다.수동으로 호출하지 않으면 스위퍼가 작동하지 않습니다. 어떻게됩니까?
이 내가 설정 내 응용 프로그램/관리/categories.rb했습니다 어떻게
ActiveAdmin.register Category do
controller do
cache_sweeper :category_sweeper
end
end
이 내 스위퍼입니다 :
class CategorySweeper < ActionController::Caching::Sweeper
observe Category
def after_save(category)
expire_cache(category)
end
def after_destroy(category)
expire_cache(category)
end
def expire_cache(category)
expire_page :controller => '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를 설정하고 작동하는 것으로 밝혀졌습니다. 그러나 어떤 이유로 캐시가 만료되지 않습니다!
하지만 show 액션을 수행하면 (즉, /categories/1.json으로 이동하면 수동 스위퍼가 작동하여 정상적으로 작동합니다). 그렇다면 왜 스위퍼는 내가 그것을 호출 할 때만 작동하고 관리자가 변경 될 때가 아닌가? 사전에
감사합니다, 다른 네임 스페이스에있는 데이비드
야, 덕분에 너무 많은 드디어 작동합니다. 나는 하나의 질문을 가지고 : 내 노선에서 /api/v1/categories.json URL을 만드는 범위를 사용합니다. 컨트롤러에 대한 의미에서/api/v1/categories를 사용해야합니다. 하지만 캐시를 지우지 않으면 캐시가 지워지지 않습니다. 그러나 url이 /categories.json 인 경우 솔루션은 훌륭하게 작동합니다. 어떤 아이디어? – bobbypage
인수로'path_prefix'를 시도하십시오. –