Class: ActiveRecord::Tenanted::LRU

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeLRU

: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

#keysObject



37
38
39
# File 'lib/active_record/tenanted/lru.rb', line 37

def keys
  @data.keys
end

#popObject



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

#sizeObject



27
28
29
# File 'lib/active_record/tenanted/lru.rb', line 27

def size
  @data.size
end