Module: Keepit::TransientStore

Defined in:
lib/keepit/transient_store.rb

Defined Under Namespace

Classes: Value

Class Method Summary collapse

Class Method Details

.clearObject



9
10
11
# File 'lib/keepit/transient_store.rb', line 9

def self.clear
  store.clear
end

.delete(key) ⇒ Object



13
14
15
16
# File 'lib/keepit/transient_store.rb', line 13

def self.delete(key)
  item = store.delete(key)
  item.value if item
end

.empty?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/keepit/transient_store.rb', line 18

def self.empty?
  store.empty?
end

.exist?(key) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
# File 'lib/keepit/transient_store.rb', line 22

def self.exist?(key)
  return true if store.key?(key) && !store[key].expired?

  delete(key)

  false
end

.fetch(key, expires_in:, &block) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/keepit/transient_store.rb', line 30

def self.fetch(key, expires_in:, &block)
  if exist?(key)
    store[key].value
  else
    value = yield
    write(key, value, expires_in: expires_in)
  end
end

.read(key) ⇒ Object



39
40
41
# File 'lib/keepit/transient_store.rb', line 39

def self.read(key)
  store[key].value if exist?(key)
end

.storeObject



43
44
45
# File 'lib/keepit/transient_store.rb', line 43

def self.store
  Thread.current[:keepit_transient_store] ||= {}
end

.write(key, value, expires_in:) ⇒ Object



47
48
49
50
51
# File 'lib/keepit/transient_store.rb', line 47

def self.write(key, value, expires_in:)
  store[key] = Value.new(value, Time.now.to_i + expires_in.to_i)

  value
end