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