30 lines
630 B
Ruby
30 lines
630 B
Ruby
|
require_dependency 'cache_sweeping_helper'
|
||
|
|
||
|
class RevisionSweeper < ActionController::Caching::Sweeper
|
||
|
|
||
|
include CacheSweepingHelper
|
||
|
|
||
|
observe Revision, Page
|
||
|
|
||
|
def after_save(record)
|
||
|
if record.is_a?(Revision)
|
||
|
expire_caches(record.page)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def after_delete(record)
|
||
|
if record.is_a?(Page)
|
||
|
expire_caches(record)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def expire_caches(page)
|
||
|
expire_cached_summary_pages(page.web)
|
||
|
pages_to_expire = ([page.name] + WikiReference.pages_that_reference(page.name)).uniq
|
||
|
pages_to_expire.each { |page_name| expire_cached_page(page.web, page_name) }
|
||
|
end
|
||
|
|
||
|
end
|