Sha256: c08f9e05012cf9c53a83809ee010e1c0161108282d8e7b7f98ca459f3614228d

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

# = 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

1 entries across 1 versions & 1 rubygems

Version Path
calagator-1.1.0 app/observers/calagator/cache_observer.rb