class Heroku::Conn::Cache
Constants
- CachePair
Public Class Methods
new()
click to toggle source
# File lib/heroku/conn/cache.rb, line 6 def initialize() @response_cache = {} @etag_pointers = {} end
Public Instance Methods
fetch(r_type, etag)
click to toggle source
# File lib/heroku/conn/cache.rb, line 26 def fetch(r_type, etag) Heroku::Properties.logger.info("[#{r_type} Cache] Fetching #{etag}") pair(r_type).etag[etag] end
put(r_type, new_etag, json)
click to toggle source
# File lib/heroku/conn/cache.rb, line 11 def put(r_type, new_etag, json) pair = pair(r_type) key = key(json) old_etag, _ = pair.response[key] record = [new_etag, json] Heroku::Properties.logger.debug("[#{r_type} Cache] Caching #{key} #{new_etag}") Heroku::Properties.logger.debug("[#{r_type} Cache] Dissociating tag: #{old_etag}") pair.etag.delete(old_etag) pair.response[key] = record pair.etag[new_etag] = record record end
Private Instance Methods
key(json_response)
click to toggle source
# File lib/heroku/conn/cache.rb, line 40 def key(json_response) case json_response when Array then "list" when Hash then json_response['id'] else nil end end
pair(r_type)
click to toggle source
# File lib/heroku/conn/cache.rb, line 33 def pair(r_type) CachePair[ @response_cache[r_type] ||= {}, @etag_pointers[r_type] ||= {} ] end