Sha256: 5e1e1f96b91b5321d50a31c3cb1b6d8c4882fbe4df783bdb6c2ed28b07c34f02

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

class PageSweeper < ActionController::Caching::Sweeper
  observe Page, Block, ::Menu, Actuality

  def after_save(record)
    expire_cache_for(record)
  end

  def after_create(record)
    expire_cache_for(record)
  end

  def before_destroy(record)
    expire_cache_for(record)
  end

  private
  def expire_cache_for(record)
    case record
    when Page
      expire_cache_for_page(record)
    when ::Menu
      expire_fragment(record.single_key) if record.single_key.present?
      expire_all_pages
    when Actuality
      expire_all_pages
    when Block
      if record.single_key
        expire_all_pages
      else
        record.pages.flatten.uniq.each do |page|
          expire_cache_for_page(page)
        end
      end
    else
      true
    end
  end

  def expire_cache_for_page(page)
    page.page_urls.each do |url|
      expire_page forgeos_cms.page_path(url)
    end

    page.menu_links.each do |link|
      expire_page link.url_and_parent_urls.join
    end
  end

  def expire_all_pages
    Page.all.each do |page|
      expire_cache_for_page(page)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
forgeos_cms-1.9.4 app/models/page_sweeper.rb
forgeos_cms-1.9.2 app/models/page_sweeper.rb
forgeos_cms-1.9.1 app/models/page_sweeper.rb
forgeos_cms-1.9.0 app/models/page_sweeper.rb