module ClassCacher::ModelAdditions

Public Class Methods

cached_unique_class_cache_key() click to toggle source
# File lib/class_cacher/model_additions.rb, line 20
def self.cached_unique_class_cache_key
  Rails.cache.fetch(["cached_unique_class_cache_key", self.name]) { self.unique_class_cache_key }
end
unique_class_cache_key() click to toggle source
# File lib/class_cacher/model_additions.rb, line 11
def self.unique_class_cache_key
  max_updated_at        = self.pluck("MAX(updated_at)").first.to_s
  parsed_max_updated_at = "#{ max_updated_at.present? ? DateTime.parse(max_updated_at).utc.to_s(:number) : nil }"
  count                 = self.count

  
  Digest::SHA1.hexdigest "#{ [parsed_max_updated_at, self.name, count] }"
end

Public Instance Methods

flush_unique_class_cache_key() click to toggle source
# File lib/class_cacher/model_additions.rb, line 7
def flush_unique_class_cache_key
  Rails.cache.delete(["cached_unique_class_cache_key", self.class.name])
end
unique_class_cache() click to toggle source
# File lib/class_cacher/model_additions.rb, line 3
def unique_class_cache
  after_commit :flush_unique_class_cache_key

private
  def flush_unique_class_cache_key
    Rails.cache.delete(["cached_unique_class_cache_key", self.class.name])
  end

  def self.unique_class_cache_key
    max_updated_at        = self.pluck("MAX(updated_at)").first.to_s
    parsed_max_updated_at = "#{ max_updated_at.present? ? DateTime.parse(max_updated_at).utc.to_s(:number) : nil }"
    count                 = self.count

    
    Digest::SHA1.hexdigest "#{ [parsed_max_updated_at, self.name, count] }"
  end

  def self.cached_unique_class_cache_key
    Rails.cache.fetch(["cached_unique_class_cache_key", self.name]) { self.unique_class_cache_key }
  end
end