Class: Arturo::FeatureCaching::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/arturo/feature_caching.rb

Overview

Quack like a Rails cache.

Instance Method Summary collapse

Constructor Details

#initializeCache

Returns a new instance of Cache.



103
104
105
# File 'lib/arturo/feature_caching.rb', line 103

def initialize
  @data = {} # of the form {key => [value, expires_at or nil]}
end

Instance Method Details

#clearObject



131
132
133
# File 'lib/arturo/feature_caching.rb', line 131

def clear
  @data.clear
end

#delete(name) ⇒ Object



116
117
118
# File 'lib/arturo/feature_caching.rb', line 116

def delete(name)
  @data.delete(name)
end

#read(name, options = nil) ⇒ Object



107
108
109
110
111
112
113
114
# File 'lib/arturo/feature_caching.rb', line 107

def read(name, options = 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



120
121
122
123
124
125
126
127
128
129
# File 'lib/arturo/feature_caching.rb', line 120

def write(name, value, options = nil)
  expires_at = if options && options.respond_to?(:[]) && options[:expires_in]
    Time.now + options.delete(:expires_in)
  else
    nil
  end
  value.freeze.tap do |val|
    @data[name] = [value, expires_at]
  end
end