I've enabled page caching on a site I'm currently constructing. The sweeper is called upon any changes made to the model, as expected. The sweeper code is as follows:
class PersonSweeper < ActionController::Caching::Sweeper
observe Person
def after_update(person) expire_staff_page end
def after_destroy(person) expire_staff_page end
def expire_staff_page $stderr.puts "@@@@@ Expiring staff page" expire_page( :controller => 'welcome', :action => 'staff' ) $stderr.puts "@@@@@ Staff Page Expired" end end
In my administrative controller, I have
class Admin::PeopleController < Admin::AdminBaseController
cache_sweeper :person_sweeper
and finally, in the public controller, I have
class WelcomeController < ApplicationController
caches_page :staff
When I hit the public 'staff' page, the cache file is created. When changes are made to the underlying data model, the sweeper method is invoked, and I see
@@@@@ Expiring staff page @@@@@ Staff Page Expired
in the server logs. However, the generated file in public/welcome/ staff.html is not removed.
What am I doing wrong?