<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -9,8 +9,7 @@ class ArticleSweeper &lt; ActionController::Caching::Sweeper
   def after_save(record)
     return if controller.nil?
     expire_overview_feed! if record.is_a?(Article)
-    pages = CachedPage.find_by_reference(record)
-    expire_cached_pages &quot;Expired pages referenced by #{record.class} ##{record.id}&quot;, *pages
+    site.expire_cached_pages controller, &quot;Expired pages referenced by #{record.class} ##{record.id}&quot;, site.cached_pages.find_by_reference(record)
   end
 
   alias after_destroy after_save</diff>
      <filename>app/cachers/article_sweeper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,8 +3,7 @@ class AssetSweeper &lt; ActionController::Caching::Sweeper
   #observe Resource
   def after_save(record)
     return if controller.nil?
-    pages = CachedPage.find_by_reference(record)
-    expire_cached_pages &quot;Expired pages referenced by #{record.class} ##{record.id}&quot;, *pages
+    site.expire_cached_pages controller, &quot;Expired pages referenced by #{record.class} ##{record.id}&quot;, site.cached_pages.find_by_reference(record)
   end
   alias after_destroy after_save
 end
\ No newline at end of file</diff>
      <filename>app/cachers/asset_sweeper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,8 +4,8 @@ class AssignedSectionSweeper &lt; ActionController::Caching::Sweeper
 
   def after_destroy(record)
     return if controller.nil?
-    pages = CachedPage.find_by_reference_key('Section', record.section_id)
-    expire_cached_pages &quot;Expired pages referenced by Section ##{record.section_id}&quot;, *pages
+    pages = site.cached_pages.find_by_reference_key('Section', record.section_id)
+    site.expire_cached_pages controller, &quot;Expired pages referenced by Section ##{record.section_id}&quot;, pages
   end
   
   alias after_create after_destroy</diff>
      <filename>app/cachers/assigned_section_sweeper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,7 @@ class CommentSweeper &lt; ActionController::Caching::Sweeper
   
   protected
     def expire_cache_for(comment)
-      pages = CachedPage.find_by_references(comment, comment.article)
-      expire_cached_pages &quot;Expired pages referenced by #{comment.class} ##{comment.id}&quot;, *pages
+      pages = site.cached_pages.find_by_references(comment, comment.article)
+      site.expire_cached_pages controller, &quot;Expired pages referenced by #{comment.class} ##{comment.id}&quot;, pages
     end
 end
\ No newline at end of file</diff>
      <filename>app/cachers/comment_sweeper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,6 @@ class TemplateSweeper &lt; ActionController::Caching::Sweeper
   end
 
   def after_save(record)
-    expire_cached_pages &quot;Expired all referenced pages&quot;, *CachedPage.find(:all) if @new.nil? &amp;&amp; controller
+    site.expire_cached_pages controller, &quot;Expired all referenced pages&quot; if @new.nil? &amp;&amp; controller
   end
 end
\ No newline at end of file</diff>
      <filename>app/cachers/template_sweeper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,7 +16,7 @@ class Admin::TemplatesController &lt; Admin::DesignController
 
   def update
     @theme.templates.write(params[:filename], params[:data])
-    Mephisto::SweeperMethods.expire_cached_pages &quot;Expired all referenced pages&quot;, self, *CachedPage.find(:all) if current_theme?
+    site.expire_cached_pages self, &quot;Expired all referenced pages&quot; if current_theme?
     render :update do |page|
       page.call 'Flash.notice', 'Template updated successfully'
     end</diff>
      <filename>app/controllers/admin/templates_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -79,7 +79,7 @@ class Admin::ThemesController &lt; Admin::BaseController
     end
 
     def sweep_cache
-      Mephisto::SweeperMethods.expire_cached_pages &quot;Expired all referenced pages&quot;, self, *CachedPage.find(:all)
+      site.expire_cached_pages self, &quot;Expired all referenced pages&quot;
     end
 
     alias authorized? admin?</diff>
      <filename>app/controllers/admin/themes_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -64,9 +64,7 @@ class ApplicationController &lt; ActionController::Base
     def set_cache_root
       host = request.domain(request.subdomains.size + (request.subdomains.first == 'www' ? 0 : 1))
       @site ||= Site.find_by_host(host) || Site.find(:first, :order =&gt; 'id')
-      if @site.multi_sites_enabled
-        self.class.page_cache_directory = File.join([RAILS_ROOT, (RAILS_ENV == 'test' ? 'tmp' : 'public'), 'cache', site.host])
-      end
+      self.class.page_cache_directory = site.page_cache_directory.to_s
     end
 
     def with_site_timezone</diff>
      <filename>app/controllers/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -18,6 +18,10 @@ class CachedPage &lt; ActiveRecord::Base
       with_scope current_scope_conditions, &amp;block
     end
 
+    def find_current(*args)
+      with_current_scope { find(*args) }
+    end
+
     # Finds all pages that this record refers to
     #
     #   CachedPage.find_by_reference  Foo.find(15)
@@ -32,9 +36,7 @@ class CachedPage &lt; ActiveRecord::Base
     #   CachedPage.find_by_reference_keys ['Foo', 15], ['Bar', 17]
     #
     def find_by_reference_keys(*array_of_keys)
-      with_current_scope do
-        find :all, :conditions =&gt; [&quot;(#{array_of_keys.collect { |r| &quot;#{connection.quote_column_name('references')} LIKE ?&quot; } * ' OR '})&quot;, *array_of_keys.collect { |r| &quot;%[#{[r.last, r.first] * ':'}]%&quot; }]
-      end
+      find_current :all, :conditions =&gt; [&quot;(#{array_of_keys.collect { |r| &quot;#{connection.quote_column_name('references')} LIKE ?&quot; } * ' OR '})&quot;, *array_of_keys.collect { |r| &quot;%[#{[r.last, r.first] * ':'}]%&quot; }]
     end
 
     # Finds all pages that this record refers to</diff>
      <filename>app/models/cached_page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ class Site &lt; ActiveRecord::Base
   @@theme_path = Pathname.new(RAILS_ROOT) + 'themes'
   cattr_reader :theme_path
 
-  cattr_accessor :multi_sites_enabled
+  cattr_accessor :multi_sites_enabled, :cache_sweeper_tracing
 
   has_many  :sections do
     def home
@@ -195,7 +195,26 @@ class Site &lt; ActiveRecord::Base
     original_timezone_writer(name)
   end
 
+  def page_cache_directory
+    multi_sites_enabled ? 
+      (RAILS_PATH + (RAILS_ENV == 'test' ? 'tmp' : 'public') + 'cache' + host) :
+      (RAILS_PATH + (RAILS_ENV == 'test' ? 'tmp/cache' : 'public'))
+  end
+
+  def expire_cached_pages(controller, log_message, pages = nil)
+    pages ||= cached_pages.find_current(:all)
+    returning cached_log_message_for(log_message, pages) do |msg|
+      controller.logger.warn msg if cache_sweeper_tracing
+      pages.each { |p| controller.class.expire_page(p.url) }
+      CachedPage.expire_pages(self, pages)
+    end
+  end
+
   protected
+    def cached_log_message_for(log_message, pages)
+      pages.inject([log_message, &quot;Expiring #{pages.size} page(s)&quot;]) { |msg, p| msg &lt;&lt; &quot; - #{p.url}&quot; }.join(&quot;\n&quot;)
+    end
+  
     def permalink_variable_format?(var)
       Mephisto::Dispatcher.variable_format?(var)
     end</diff>
      <filename>app/models/site.rb</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,7 @@ require 'mephisto_init'
 # ActionController::AbstractRequest.relative_url_root = '/blog'
 
 # turn this on to get detailed cache sweeper logging in production mode
-# Mephisto::SweeperMethods.cache_sweeper_tracing = true
+# Site.cache_sweeper_tracing = true
 
 # Enable if you want to host multiple sites on this app
 # Site.multi_sites_enabled = true</diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,7 @@
 module Mephisto
   module SweeperMethods
-    mattr_accessor :cache_sweeper_tracing
-
-    def self.expire_cached_pages(log_message, controller, *pages)
-      if cache_sweeper_tracing
-        controller.logger.warn log_message
-        controller.logger.warn &quot;Expiring #{pages.size} page(s)&quot;
-        pages.each do |page|
-          controller.logger.warn &quot; - #{page.url}&quot;
-        end
-      end
-      if pages.any?
-        pages.each { |p| controller.class.expire_page(p.url) }
-        CachedPage.expire_pages(controller.site, pages)
-      end
-    end
-
-    def expire_cached_pages(log_message, *pages)
-      SweeperMethods.expire_cached_pages(log_message, controller, *pages)
-    end
-
     def expire_overview_feed!
-      if cache_sweeper_tracing
+      if Site.cache_sweeper_tracing
         controller.logger.warn &quot;Expiring Overview Feed: #{overview_path}&quot;
       end
       controller.class.expire_page overview_path</diff>
      <filename>lib/mephisto/sweeper_methods.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,6 +7,8 @@ require File.expand_path(File.dirname(__FILE__) + &quot;/actor&quot;)
 ASSET_PATH = File.join(RAILS_ROOT, 'test/fixtures/tmp/assets') unless Object.const_defined?(:ASSET_PATH)
 require File.join(File.dirname(__FILE__), 'referenced_caching_test_helper')
 
+Site.cache_sweeper_tracing = true
+
 Time.class_eval do
   class &lt;&lt; self
     alias_method :real_now, :now</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>17063ca5b25cb3d05b6c38d2909f1be3ae0fbb20</id>
    </parent>
  </parents>
  <author>
    <name>technoweenie</name>
    <email>technoweenie@567b1171-46fb-0310-a4c9-b4bef9110e78</email>
  </author>
  <url>http://github.com/francois/mephisto/commit/4231359d8ccbbff9cd7436832d479b8a13859aa2</url>
  <id>4231359d8ccbbff9cd7436832d479b8a13859aa2</id>
  <committed-date>2006-09-25T20:07:27-07:00</committed-date>
  <authored-date>2006-09-25T20:07:27-07:00</authored-date>
  <message>refactored cache sweeping methods

git-svn-id: http://svn.techno-weenie.net/projects/mephisto/trunk@2275 567b1171-46fb-0310-a4c9-b4bef9110e78</message>
  <tree>711fad4e2862e73b143caa0aaf22a7d89473efd7</tree>
  <committer>
    <name>technoweenie</name>
    <email>technoweenie@567b1171-46fb-0310-a4c9-b4bef9110e78</email>
  </committer>
</commit>
