Class: RailsTypedSettings::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_typed_settings/cache.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(max_size, &block) ⇒ Cache



6
7
8
9
10
11
# File 'lib/rails_typed_settings/cache.rb', line 6

def initialize(max_size, &block)
  @max_size = max_size
  @store = {}
  @get_value = block
  @misses = 0
end

Instance Attribute Details

#get_valueObject

Returns the value of attribute get_value.



4
5
6
# File 'lib/rails_typed_settings/cache.rb', line 4

def get_value
  @get_value
end

#last_addedObject

Returns the value of attribute last_added.



3
4
5
# File 'lib/rails_typed_settings/cache.rb', line 3

def last_added
  @last_added
end

#max_sizeObject

Returns the value of attribute max_size.



3
4
5
# File 'lib/rails_typed_settings/cache.rb', line 3

def max_size
  @max_size
end

#missesObject

Returns the value of attribute misses.



3
4
5
# File 'lib/rails_typed_settings/cache.rb', line 3

def misses
  @misses
end

#storeObject

Returns the value of attribute store.



3
4
5
# File 'lib/rails_typed_settings/cache.rb', line 3

def store
  @store
end

Instance Method Details

#add(key, value) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/rails_typed_settings/cache.rb', line 24

def add(key, value)
  store[key] = value

  if store.count > max_size
    remove_last
  end

  self.last_added = key
  value
end

#clearObject



39
40
41
42
# File 'lib/rails_typed_settings/cache.rb', line 39

def clear
  self.misses = 0
  self.store = {}
end

#remove(key) ⇒ Object



35
36
37
# File 'lib/rails_typed_settings/cache.rb', line 35

def remove(key)
  store.delete(key)
end

#value(key) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/rails_typed_settings/cache.rb', line 13

def value(key)
  v = store[key]
  unless v
    @misses = @misses + 1
    v = get_value.call(key)
    add(key, v) if v
  end
  
  v
end