Module: ClassCacher::ModelAdditions

Defined in:
lib/class_cacher/model_additions.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cached_unique_class_cache_keyObject



20
21
22
# 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_keyObject



11
12
13
14
15
16
17
18
# 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

Instance Method Details

#flush_unique_class_cache_keyObject



7
8
9
# 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_cacheObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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