Sha256: b5c9b1c715db4a46108b86a5314e396d8208d758d4a2155f1e104d99ac0ef6ee
Contents?: true
Size: 957 Bytes
Versions: 2
Compression:
Stored size: 957 Bytes
Contents
module Keepit module TransientStore Value = Struct.new(:value, :expired_at) do def expired? expired_at < Time.now.to_i end end def self.clear store.clear end def self.delete(key) item = store.delete(key) item.value if item end def self.empty? store.empty? end def self.exist?(key) return true if store.key?(key) && !store[key].expired? delete(key) false end 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 def self.read(key) store[key].value if exist?(key) end def self.store Thread.current[:keepit_transient_store] ||= {} end def self.write(key, value, expires_in:) store[key] = Value.new(value, Time.now.to_i + expires_in.to_i) value end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
keepit-0.1.1 | lib/keepit/transient_store.rb |
keepit-0.1.0 | lib/keepit/transient_store.rb |