#--- # Excerpted from "Agile Web Development with Rails, 3rd Ed.", # published by The Pragmatic Bookshelf. # Copyrights apply to this code. It may not be used to create training material, # courses, books, articles, and the like. Contact us if you are in doubt. # We make no guarantees that this code is fit for any purpose. # Visit http://www.pragmaticprogrammer.com/titles/rails3 for more book information. #--- class FlatpageSweeper < ActionController::Caching::Sweeper observe Flatpage # If we create a new article, the public list of articles must be regenerated def after_create(article) expire_public_page end # If we update an existing article, the cached version of that article is stale def after_update(article) expire_article_page(article.id) end # Deleting a page means we update the public list and blow away the cached article def after_destroy(article) expire_public_page expire_article_page(article.id) end private def expire_public_page expire_page(:controller => "content", :action => 'public_content') end def expire_article_page(article_id) expire_action(:controller => "content", :action => "premium_content", :id => article_id) end end