Module: KeyBasedCache

Defined in:
lib/key_based_cache.rb,
lib/key_based_cache/version.rb

Constant Summary collapse

PARAMETER_KEY_PREFIX =

We use prefixes since it appears that delete_matched doesn’t generally support negative lookahead regexes.

'parameter-'
VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.cache_key_for(objects, key_params) ⇒ Object



7
8
9
10
# File 'lib/key_based_cache.rb', line 7

def self.cache_key_for(objects, key_params)
  sha1 = Digest::SHA1.hexdigest(key_params.to_json)
  (objects.map(&:cache_key) + [sha1]).join('/')
end

.cache_key_from_parameter_key(parameter_cache_key) ⇒ Object



22
23
24
# File 'lib/key_based_cache.rb', line 22

def self.cache_key_from_parameter_key(parameter_cache_key)
  parameter_cache_key.sub(/^#{PARAMETER_KEY_PREFIX}/, '')
end

.fetch(objects, key_params = {}, cache_options = {}, should_stash_params = false) ⇒ Object



12
13
14
15
16
# File 'lib/key_based_cache.rb', line 12

def self.fetch(objects, key_params = {}, cache_options = {}, should_stash_params = false)
  cache_key = cache_key_for(objects, key_params)
  Rails.cache.data.set(parameter_key(cache_key), key_params) if should_stash_params
  Rails.cache.fetch(cache_key, cache_options) { yield }
end

.parameter_key(cache_key) ⇒ Object



18
19
20
# File 'lib/key_based_cache.rb', line 18

def self.parameter_key(cache_key)
  PARAMETER_KEY_PREFIX + cache_key
end