Hi experts, I have built a typical cache sweeper class: #====================== class PrivilegeCacheSweeper < ActionController::Caching::Sweeper observe User def after_update(user) expire_cache_for(user) end private def expire_cache_for(user) p "Hi there!!!" expire_action(:controller => "users", :action => "user_view") end end #====================== In the UsersController I set: #====================== class UsersController < ApplicationController caches_action :user_view cache_sweeper :privilege_cache_sweeper def user_view #code to show list of accessible units of login user end def update #update user end end #====================== In environment.rb, I already set: #====================== config.action_controller.perform_caching = true #====================== The problem is that after the user is updated, the page "user_view" is still cached when being refreshed (The output shows "Cached fragment hit: views/localhost:3000/users/user_view"). The output also shows the text "Hi there!!!" => It means method "expire_cache_for(user)" is called. However, "expire_action()" seems not to work at all. I also tested the expire_action(:controller => "users", :action => "user_view") by inserting it directly in UsersController::update method. It works fine! Could you give me any suggestion to solve this problem? My application runs on: Rails: 2.3.2 Ruby: 1.8 OS: Ubuntu 8.04 Thank you very much.
on 2010-05-13 12:07
on 2010-05-15 03:18
Hi, For whom may get the same problem: I moved the sweeper declaration 'cache_sweeper :privilege_cache_sweeper' from UsersController to ApplicationController. And it works for me! But I still have no idea why this change makes expire_action in cache sweeper work. Any explanations are welcome. Thanks and regards, .Viet Trung.
on 2010-07-18 09:06
Viet, I signed up today just to say you are my savior. I couldn't figure out why the hell my sweeper wasn't working either. Thanks for the working fix.
on 2012-12-10 00:33
Over two years later .. same problem, same fix, thanks!! But I would also like an answer to the original question .. because i also don't understand why it only works in the AppController
on 2012-12-10 03:46
On Sun, Dec 9, 2012 at 5:33 PM, Simon K. <firstname.lastname@example.org> wrote: > Over two years later .. same problem, same fix, thanks!! > But I would also like an answer to the original question .. because i > also don't understand why it only works in the AppController -ENOCONTEXT