Class: ActiveRecord::Tenanted::LRU
- Inherits:
-
Object
- Object
- ActiveRecord::Tenanted::LRU
- Defined in:
- lib/active_record/tenanted/lru.rb
Overview
Inspired by the lru_redux gem, this LRU queue relies on Concurrent::Hash being ordered
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
-
#initialize ⇒ LRU
constructor
:nodoc:.
- #keys ⇒ Object
- #pop ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize ⇒ LRU
:nodoc:
7 8 9 |
# File 'lib/active_record/tenanted/lru.rb', line 7 def initialize @data = Concurrent::Hash.new end |
Instance Method Details
#[](key) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/active_record/tenanted/lru.rb', line 11 def [](key) found = true value = @data.delete(key) { found = false } if found @data[key] = value else nil end end |
#[]=(key, value) ⇒ Object
21 22 23 24 25 |
# File 'lib/active_record/tenanted/lru.rb', line 21 def []=(key, value) @data.delete key @data[key] = value value end |
#keys ⇒ Object
37 38 39 |
# File 'lib/active_record/tenanted/lru.rb', line 37 def keys @data.keys end |
#pop ⇒ Object
31 32 33 34 35 |
# File 'lib/active_record/tenanted/lru.rb', line 31 def pop key, value = @data.first @data.delete(key) [ key, value ] end |
#size ⇒ Object
27 28 29 |
# File 'lib/active_record/tenanted/lru.rb', line 27 def size @data.size end |