Method: SupportTableCache::MemoryCache#fetch

Defined in:
lib/support_table_cache/memory_cache.rb

#fetch(key, expires_in: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/support_table_cache/memory_cache.rb', line 16

def fetch(key, expires_in: nil)
  serialized_value, expire_at = @cache[key]
  if serialized_value.nil? || (expire_at && expire_at < Process.clock_gettime(Process::CLOCK_MONOTONIC))
    value = yield if block_given?
    return nil if value.nil?
    write(key, value, expires_in: expires_in)
    serialized_value = Marshal.dump(value)
  end
  Marshal.load(serialized_value)
end