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
- .cache_key_for(objects, key_params) ⇒ Object
- .cache_key_from_parameter_key(parameter_cache_key) ⇒ Object
- .fetch(objects, key_params = {}, cache_options = {}, should_stash_params = false) ⇒ Object
- .parameter_key(cache_key) ⇒ Object
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 = {}, = {}, 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, ) { 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 |