Ruby Forum Ruby on Rails > Expire cache in rake issue

Posted by jazzy jazzy (vinay)
on 02.12.2007 07:14
Hi All,
I am trying to expire a fragment cache in rake. I know that the best
practice to expire the cache is in the Sweepers. But as I have to expire
the cache at the end of the month I was thinking on the lines of doing
it in a rake task.
I had tried this but it showed me an error while running the task

expire_fragment(:controller => :login, :action => :index, :something=>
"1")

Well it gives me a "No method Error"

Wanted to know what is the best practice to clear the cache on a cron
job? Should a sweeper action be called or a rake task is prescribed?

If any one has done this would highly appreciate if he/she could provide
the code for calling a sweeper action from a cron or can someone point
out what I am missing in the rake file. Do I have to create an object
and then call the method if so then an object of what class?

Please pardon me for being such a newbie. Any help would be highly
appreciated.

Cheers,
Jazzy
Posted by jazzy jazzy (vinay)
on 03.01.2008 10:01
Any body knows how to get this done?
Posted by Silviu lucian Vacaroiu (ibocorp)
on 04.05.2008 21:42
Hate to bring back an old topic but I just came across this in my 
frantic search to find a solution to much the same problem. So here it 
goes:

In you rake task call: ApplicationController.expire_page(...)
Posted by Silviu lucian Vacaroiu (ibocorp)
on 04.05.2008 21:44
Silviu lucian Vacaroiu wrote:
> Hate to bring back an old topic but I just came across this in my 
> frantic search to find a solution to much the same problem. So here it 
> goes:
> 
> In you rake task call: ApplicationController.expire_page(...)

of course, make sure your environment gets setup first:

  task :expire_cache => :environment do
    ApplicationController.expire_page(:controller => "welcome")
  end
Posted by Silviu lucian Vacaroiu (ibocorp)
on 04.05.2008 22:10
no, sorry, scratch that

I was trying it in the console and though it was working there I realize 
now it's not the same thing. In the end I got away with using something 
like:

task :expire_cache => :environment do
   ActionController::Base::expire_page('/')
end

In my case, I wanted to delete 'index.html' (root page-cache)