Buscando en la lista de Rails en Ingles, logre resolver el problema, el
asunto era que estaba especificando mal el controlador:
frontend controller
class Articulos < AplicationController
caches_page :index, show
…
end
backend controller
class Admin::Articulos < AplicationController
cache_sweeper :articulo_sweeper, :only => [:create, :update, :destroy]
…
end
Sweeper
class ArticuloSweeper < ActionController::Caching::Sweeper
def after_save(articulo)
expire_cache_for(articulo)
end
…
def expire_cache_for(articulo)
# expire_page :controller => ‘articulos’, :action => ‘index’ ->asi
estaba antes
# ahora:
expire_page :controller => ‘/’, :action => ‘index’
end
end
El punto era que al llamar a ‘cache_sweeper’ desde el controlador dentro
de
‘admin’, entonces estaba buscando la ruta ‘admin/articulos/index.html’
en el
directorio del cache que por defecto es ‘public’, entonces nunca lo
encontraba, ya que el archivo de cache que se generaba estaba en
‘public/index.html’ debido a que mi controlador principal es
‘articulos’,
entonces cambie la ruta del controlador en el sweeper y listo.