module TieredCaching::CachedObjectStatic

Constants

Attributes

Public Instance Methods

[](key) click to toggle source
# File lib/tiered_caching/cached_object.rb, line 13
def [](key)
  if on_missing_callback
    cache.getset(internal_key(key)) { on_missing_callback.call(key) }
  else
    cache.get(internal_key(key))
  end
end
[]=(key, value) click to toggle source
# File lib/tiered_caching/cached_object.rb, line 21
def []=(key, value)
  raise TypeError, "Cannot convert #{value.class} into #{self}" unless value.is_a?(self)

  cache.set(internal_key(key)) { value }
end
cache_line=(value) click to toggle source
# File lib/tiered_caching/cached_object.rb, line 5
def cache_line=(value)
  @cache_line = value
end
delete(key) click to toggle source
# File lib/tiered_caching/cached_object.rb, line 27
def delete(key)
  cache.delete(internal_key(key))
end
on_missing(&callback) click to toggle source
# File lib/tiered_caching/cached_object.rb, line 9
def on_missing(&callback)
  attributes[:on_missing_callback] = callback
end

Private Instance Methods

attributes() click to toggle source
# File lib/tiered_caching/cached_object.rb, line 46
def attributes
  @attributes ||= Attributes.new
end
cache() click to toggle source
# File lib/tiered_caching/cached_object.rb, line 33
def cache
  CacheMaster[@cache_line]
end
internal_key(key) click to toggle source
# File lib/tiered_caching/cached_object.rb, line 41
def internal_key(key)
  raise ArgumentError, 'Non-string keys are not supported!' unless key.is_a?(String)
  {class: self, key: key.encode('UTF-8')}
end
on_missing_callback() click to toggle source
# File lib/tiered_caching/cached_object.rb, line 37
def on_missing_callback
  attributes[:on_missing_callback]
end