Sha256: 98e0d28d38400220fa0391dc11be67adb5ab7d98cee63307e153cb69146d2209

Contents?: true

Size: 1.27 KB

Versions: 6

Compression:

Stored size: 1.27 KB

Contents

class SpudBannerSweeper < ActionController::Caching::Sweeper
  observe :spud_banner, :spud_banner_set

  def before_save(record)
    if record.is_a?(SpudBannerSet)
      @old_name = record.name
    end
  end

  def after_save(record)
    if record.is_a?(SpudBanner)
      expire_cache_for(record.owner)
    else
      expire_cache_for(record)
    end
  end

  def after_destroy(record)
    if record.is_a?(SpudBanner)
      expire_cache_for(record.owner)
    else
      expire_cache_for(record)
    end
  end

private

  def expire_cache_for(record)
    # lazy full page cache clear
    cache_path = ActionController::Base.page_cache_directory
    if cache_path != Rails.root && cache_path != Rails.public_path && File.directory?(cache_path)
      FileUtils.rm_rf(cache_path)
    end

    # reprocess cached liquid tags
    if defined?(Spud::Cms)
      values = [record.set_name]
      values << @old_name if !@old_name.blank?
      SpudPageLiquidTag.where(:tag_name => "banner_set",:value => values).includes(:attachment).each do |tag|
        partial = tag.attachment
        partial.postprocess_content
        partial.save
        page = partial.try(:spud_page)
        if page.blank? == false
          page.updated_at = Time.now.utc
          page.save
        end
      end
    end
  end

end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
spud_banners-0.9.3 app/observers/spud_banner_sweeper.rb
tb_banners-1.0.2 app/observers/spud_banner_sweeper.rb
spud_banners-0.9.2 app/observers/spud_banner_sweeper.rb
tb_banners-1.0.1 app/observers/spud_banner_sweeper.rb
tb_banners-1.0 app/observers/spud_banner_sweeper.rb
spud_banners-0.9.1.1 app/observers/spud_banner_sweeper.rb