Class: Arturo::FeatureCaching::Cache
- Inherits:
-
Object
- Object
- Arturo::FeatureCaching::Cache
- Defined in:
- lib/arturo/feature_caching.rb
Overview
Quack like a Rails cache.
Instance Method Summary collapse
- #clear ⇒ Object
- #delete(name) ⇒ Object
-
#initialize ⇒ Cache
constructor
A new instance of Cache.
- #read(name, options = nil) ⇒ Object
- #write(name, value, options = nil) ⇒ Object
Constructor Details
#initialize ⇒ Cache
Returns a new instance of Cache.
198 199 200 |
# File 'lib/arturo/feature_caching.rb', line 198 def initialize @data = {} # of the form {key => [value, expires_at or nil]} end |
Instance Method Details
#clear ⇒ Object
226 227 228 |
# File 'lib/arturo/feature_caching.rb', line 226 def clear @data.clear end |
#delete(name) ⇒ Object
211 212 213 |
# File 'lib/arturo/feature_caching.rb', line 211 def delete(name) @data.delete(name) end |
#read(name, options = nil) ⇒ Object
202 203 204 205 206 207 208 209 |
# File 'lib/arturo/feature_caching.rb', line 202 def read(name, = nil) value, expires_at = *@data[name] if value && (expires_at.blank? || expires_at > Time.now) value else nil end end |
#write(name, value, options = nil) ⇒ Object
215 216 217 218 219 220 221 222 223 224 |
# File 'lib/arturo/feature_caching.rb', line 215 def write(name, value, = nil) expires_at = if && .respond_to?(:[]) && [:expires_in] Time.now + .delete(:expires_in) else nil end value.freeze.tap do |val| @data[name] = [value, expires_at] end end |