Method: IdentityCache::CacheFetcher#fetch

Defined in:
lib/identity_cache/cache_fetcher.rb

#fetch(key) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/identity_cache/cache_fetcher.rb', line 27

def fetch(key)
  result = nil
  yielded = false
  @cache_backend.cas(key) do |value|
    yielded = true
    unless IdentityCache::DELETED == value
      result = value
      break
    end
    result = yield
    break unless IdentityCache.should_update_cache?
    result
  end
  unless yielded
    result = yield
    add(key, result)
  end
  result
end