I am trying to utilize page caching in my application, and have done the following: [code=]config.action_controller.perform_caching = true config.action_view.cache_template_extensions = false[/code] (What is that second setting above??) In a controller with actions being cached: [code=]caches_page :index, :no_site[/code] In a controller where the cached pages need to get cleared: [code=]cache_sweeper :site_sweeper, :only => [:update][/code] And finally, the sweeper: [code=]class SiteSweeper < ActionController::Caching::Sweeper include ActionController::UrlWriter include ActionController::Caching::Pages observe Site # This sweeper is going to keep an eye on the Site model # If our sweeper detects that a Site was updated call this def after_update(site) if (site.is_production) expire_cache_for(site) end end private def expire_cache_for(site) puts "EXPIRING CACHED SITE FOR " + site.geocode # Expire the two cached actions for the home page (they hold a list of all active sites) #expire_page(:controller => "/wibp_sites", :action => "index") #expire_page(:controller => "/wibp_sites", :action => "no_site") puts page_cache_path("index") expire_page("index") expire_page("wibp_sites/index") expire_page("wibp_sites/no_site") # Expire all pages for the site, which include controller, action, and id (geocode) expire_page(:controller => "/wibp_home", :action => "index", :id => site.geocode) expire_page(:controller => "/wibp_calendar", :action => "index", :id => site.geocode) expire_page(:controller => "/wibp_officers", :action => "index", :id => site.geocode) expire_page(:controller => "/wibp_other_units", :action => "index", :id => site.geocode) expire_page(:controller => "/wibp_links", :action => "index", :id => site.geocode) end end[/code] As you can hopefully tell, i''ve tried various tactics to try to get pages swept, including the following versions of the expire_page method: [code=]expire_page(:controller => "wibp_sites", :action => "index") expire_page(:controller => "/wibp_sites", :action => "index") expire_page("/wibp_sites/index") expire_page("wibp_sites/index") expire_page("/wibp_sites/index.html")[/code] ..but nothing has resulted in the cached page files actually being removed (for the page in the example directly above, the cached page is stored at ''/public/wibp_sites/index.html''). I have verified that the ''perform_caching'' property is true, and the ''puts "EXPIRING CACHED SITE FOR " + site.geocode'' line gets executed. Also, when the ''puts page_cache_path("index")'' is executed it outputs ''nil''. Finally, i''ve never seen the ''Expired page: '' output appear in the log file, and i''ve seen this in all the tutorials. Can someone help me diagnose where i''m failing here? Thanks for your time, jesse -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I''m not quite sure where to head with this (I use fragment caching) but: -> Which version of Rails are you using? -> Do you see anything in the web server logs? Maybe the Rails login doesn''t have the rights to dicker with files in the web server''s cache folder? -> Perhaps your paths aren''t equivalent? By that I mean that the path to the cached page isn''t the same as the path you''re attempting to expire with... -> Can you test this in development where you have (I hope) full control over the application stack? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Please see my responses below: Ar Chron wrote:> I''m not quite sure where to head with this (I use fragment caching) but: > > -> Which version of Rails are you using?Using Rails 2.0.2. Locally, i''m developing on Windows XP with InstantRails 2.0, which consists of: * Upgrades Ruby to version 1.8.6 Patch Level 111 * Upgrades Rails to 2.0.2 * Upgrades Mongrel to 1.1.2 * Upgrades RubyGems? to 1.0.1 * Upgrades Rake to 0.8.1 The live development server is Linux, same version of Rails. It''s running in production mode, i''m running in development locally. But i''m turning caching on in each respectively, when trying to get it working.> -> Do you see anything in the web server logs? Maybe the Rails login > doesn''t have the rights to dicker with files in the web server''s cache > folder?Where would i look to see anything in the ''web server logs'' when Mongrel is serving the site? Somewhere beyond <application root>/log/development.log? Also, i''m using the default cache location (<application root>)/public).> -> Perhaps your paths aren''t equivalent? By that I mean that the path to > the cached page isn''t the same as the path you''re attempting to expire > with...This is my most likely hypothesis right now, but i''m having a hard time testing it. From what i can tell, the ''expire_page'' function utilizes the ''page_cache_path'' function to figure out the path to the cached page, and when i call that function myself it returns nil. The source for the ''expire_page'' function looks like this: 65: def expire_page(path) 66: return unless perform_caching 67: 68: benchmark "Expired page: #{page_cache_file(path)}" do 69: File.delete(page_cache_path(path)) if File.exist?(page_cache_path(path)) 70: end 71: end perform_caching is true, i''ve tested that, but i''ve never seen the "Expired page: xxx" entry in the development.log. Under what circumstances does ''benchmark'' get executed?> -> Can you test this in development where you have (I hope) full control > over the application stack?As i mentioned, i am testing this locally - if you have any specific tests to perform or other ideas i''d be very appreciative. j -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---