Module: ChromeData::Caching

Included in:
ChromeData
Defined in:
lib/chrome_data/caching.rb

Instance Method Summary collapse

Instance Method Details

#_cache_storeObject

Creates CacheStore object based on config.cache_store options reverse merges ‘chromedata’ namespace to options hash



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/chrome_data/caching.rb', line 4

def _cache_store
  return @@_cache_store if defined? @@_cache_store

  if ChromeData.config.cache_store
    cache_opts = { namespace: 'chromedata' }

    if ChromeData.config.cache_store.is_a?(Array)
      if ChromeData.config.cache_store.last.is_a?(Hash)
        ChromeData.config.cache_store.last.reverse_merge! cache_opts
      else
        ChromeData.config.cache_store << cache_opts
      end
    elsif ChromeData.config.cache_store.is_a?(Symbol)
      ChromeData.config.cache_store = [ChromeData.config.cache_store, cache_opts]
    end

    @@_cache_store = ActiveSupport::Cache.lookup_store(ChromeData.config.cache_store)
  end
end

#cache(key, &blk) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/chrome_data/caching.rb', line 24

def cache(key, &blk)
  if ChromeData._cache_store
    ChromeData._cache_store.fetch key, &blk
  else
    blk.call
  end
end