class ZendeskAPI::LRUCache

codesnippets.joyent.com/posts/show/12329 @private

Attributes

size[RW]

Public Class Methods

new(size = 10) click to toggle source
# File lib/zendesk_api/lru_cache.rb, line 7
def initialize(size = 10)
  @size = size
  @store = {}
  @lru = []
end

Public Instance Methods

fetch(key) { || ... } click to toggle source
# File lib/zendesk_api/lru_cache.rb, line 25
def fetch(key)
  if @store.has_key? key
    read key
  else
    write key, yield
  end
end
read(key) click to toggle source
# File lib/zendesk_api/lru_cache.rb, line 20
def read(key)
  set_lru(key)
  @store[key]
end
write(key, value) click to toggle source
# File lib/zendesk_api/lru_cache.rb, line 13
def write(key, value)
  @store[key] = value
  set_lru(key)
  @store.delete(@lru.pop) if @lru.size > @size
  value
end

Private Instance Methods

set_lru(key) click to toggle source
# File lib/zendesk_api/lru_cache.rb, line 35
def set_lru(key)
  @lru.unshift(@lru.delete(key) || key)
end