Class: Delorean::Cache::Adapters::RubyCache
- Defined in:
- lib/delorean/cache/adapters/ruby_cache.rb
Instance Attribute Summary collapse
-
#lookup_cache ⇒ Object
readonly
Returns the value of attribute lookup_cache.
-
#size_per_class ⇒ Object
readonly
Returns the value of attribute size_per_class.
Instance Method Summary collapse
- #cache_item(klass:, cache_key:, item:) ⇒ Object
- #cache_key(klass:, method_name:, args:) ⇒ Object
- #clear!(klass:) ⇒ Object
- #clear_all! ⇒ Object
- #fetch_item(klass:, cache_key:, default: nil) ⇒ Object
-
#initialize(size_per_class: 1000) ⇒ RubyCache
constructor
A new instance of RubyCache.
Methods inherited from Base
Constructor Details
#initialize(size_per_class: 1000) ⇒ RubyCache
Returns a new instance of RubyCache.
11 12 13 14 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 11 def initialize(size_per_class: 1000) @lookup_cache = {} @size_per_class = size_per_class end |
Instance Attribute Details
#lookup_cache ⇒ Object (readonly)
Returns the value of attribute lookup_cache.
9 10 11 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 9 def lookup_cache @lookup_cache end |
#size_per_class ⇒ Object (readonly)
Returns the value of attribute size_per_class.
9 10 11 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 9 def size_per_class @size_per_class end |
Instance Method Details
#cache_item(klass:, cache_key:, item:) ⇒ Object
16 17 18 19 20 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 16 def cache_item(klass:, cache_key:, item:) lookup_cache[klass] ||= {} clear_outdated_items(klass: klass) lookup_cache[klass][cache_key] = item end |
#cache_key(klass:, method_name:, args:) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 32 def cache_key(klass:, method_name:, args:) [method_name] + args.map do |arg| next arg.id if arg.respond_to?(:id) arg end.freeze end |
#clear!(klass:) ⇒ Object
40 41 42 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 40 def clear!(klass:) lookup_cache[klass] = {} end |
#clear_all! ⇒ Object
44 45 46 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 44 def clear_all! @lookup_cache = {} end |
#fetch_item(klass:, cache_key:, default: nil) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/delorean/cache/adapters/ruby_cache.rb', line 22 def fetch_item(klass:, cache_key:, default: nil) subh = lookup_cache.fetch(klass, default) return default if subh == default v = subh.fetch(cache_key, default) return default if v == default v end |