Sha256: bb027b60e8a89d5ecd54c20cb3624a35d94a9cd9662acbf2c5bdd09b381b1833

Contents?: true

Size: 1.05 KB

Versions: 7

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

# = CacheObserver
#
# Expires caches.
module Calagator
  class CacheObserver < ActiveRecord::Observer
    observe Event, Venue

    #---[ Unique methods ]--------------------------------------------------

    # Returns a cache key string for the day, e.g. "20080730". It's used
    # primarily by the #cache_if calls in views. The optional +request+ object
    # provides a HTTP_HOST so that caching can be done for a particular hostname.
    def self.daily_key_for(name, _request = nil)
      "#{name}@#{Time.zone.now.strftime("%Y%m%d")}"
    end

    # Expires all cached data.
    def self.expire_all
      Rails.logger.info "CacheObserver::expire_all: invoked"
      Rails.cache.clear
    end

    #---[ Triggers ]--------------------------------------------------------

    def after_save(_record)
      Rails.logger.info "CacheObserver#after_save: invoked"
      self.class.expire_all
    end

    def after_destroy(_record)
      Rails.logger.info "CacheObserver#after_destroy: invoked"
      self.class.expire_all
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
koalagator-4.1.0 app/observers/calagator/cache_observer.rb
koalagator-4.0.0 app/observers/calagator/cache_observer.rb
koalagator-3.0.0 app/observers/calagator/cache_observer.rb
koalagator-2.1.1 app/observers/calagator/cache_observer.rb
koalagator-2.1.0 app/observers/calagator/cache_observer.rb
calagator2-2.1.1 app/observers/calagator/cache_observer.rb
calagator2-2.1.0 app/observers/calagator/cache_observer.rb