Class: TranslationDiff::Stores::Memory

Inherits:
Object
  • Object
show all
Defined in:
lib/translation_diff/stores/memory.rb

Overview

The default cache, a bounded in-process LRU. NOT thread-safe, deliberately -- set redis_url for that.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(max_size:) ⇒ Memory

Returns a new instance of Memory.



5
6
7
8
# File 'lib/translation_diff/stores/memory.rb', line 5

def initialize(max_size:)
  @max_size = max_size
  @entries = {}
end

Class Method Details

.build(config) ⇒ Object



3
# File 'lib/translation_diff/stores/memory.rb', line 3

def self.build(config) = new(max_size: config.cache_max_size)

Instance Method Details

#read_multi(keys) ⇒ Object



10
11
12
# File 'lib/translation_diff/stores/memory.rb', line 10

def read_multi(keys)
  keys.map { |key| touch(key) }
end

#write(key, value) ⇒ Object



14
15
16
17
18
19
# File 'lib/translation_diff/stores/memory.rb', line 14

def write(key, value)
  @entries.delete(key)
  @entries[key] = value
  @entries.shift while @entries.size > @max_size
  value
end

#write_multi(pairs) ⇒ Object



21
22
23
# File 'lib/translation_diff/stores/memory.rb', line 21

def write_multi(pairs)
  pairs.each { |key, value| write(key, value) }
end