Module: Keepit::TransientStore
- Defined in:
- lib/keepit/transient_store.rb
Defined Under Namespace
Classes: Value
Class Method Summary collapse
- .clear ⇒ Object
- .delete(key) ⇒ Object
- .empty? ⇒ Boolean
- .exist?(key) ⇒ Boolean
- .fetch(key, expires_in:, &block) ⇒ Object
- .read(key) ⇒ Object
- .store ⇒ Object
- .write(key, value, expires_in:) ⇒ Object
Class Method Details
.clear ⇒ Object
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
18 19 20 |
# File 'lib/keepit/transient_store.rb', line 18 def self.empty? store.empty? end |
.exist?(key) ⇒ 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 |
.store ⇒ Object
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 |