module FBomb::Flowdock::Cache
Constants
- TTL
Public Instance Methods
_cache()
click to toggle source
# File lib/fbomb/flowdock.rb, line 276 def _cache @_cache ||= Map.new end
fetch(key, &block)
click to toggle source
# File lib/fbomb/flowdock.rb, line 280 def fetch(key, &block) entry = _cache[key] if entry value, cached_at = entry expired = (Time.now - cached_at) > TTL if expired begin write(key, block.call) rescue Object => e warn "#{ e.message }(#{ e.class })" value end else value end else write(key, block.call) end end
read(key)
click to toggle source
# File lib/fbomb/flowdock.rb, line 253 def read(key) entry = _cache[key] return nil unless entry value, cached_at = entry expired = (Time.now - cached_at) > TTL if expired _cache.delete(key) nil else value end end
write(key, value)
click to toggle source
# File lib/fbomb/flowdock.rb, line 269 def write(key, value) cached_at = Time.now entry = [value, cached_at] _cache[key] = entry value end