Class: RememberTheRuby::Storage

Inherits:
Preferences::Manager
  • Object
show all
Defined in:
lib/remember-the-ruby/storage.rb

Instance Method Summary collapse

Constructor Details

#initializeStorage

Returns a new instance of Storage.



7
8
9
# File 'lib/remember-the-ruby/storage.rb', line 7

def initialize
  super(:remember_the_ruby, :autosave => true)
end

Instance Method Details

#[](key) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/remember-the-ruby/storage.rb', line 32

def [](key)
  now     = Time.now
  timeout = cache_timeout_for(key) || now
  if timeout < now
    self.delete(key)
    self[:cache].delete(key)
  end
  super
end

#cache_timeout_for(key) ⇒ Object



17
18
19
# File 'lib/remember-the-ruby/storage.rb', line 17

def cache_timeout_for(key)
  original_reader(:cache) ? original_reader(:cache)[key] : nil
end

#original_readerObject



30
# File 'lib/remember-the-ruby/storage.rb', line 30

alias_method :original_reader, :[]

#purge_cache!Object



21
22
23
24
25
26
27
28
# File 'lib/remember-the-ruby/storage.rb', line 21

def purge_cache!
  return unless self[:cache].is_a?(Enumerable)
  self[:cache].each do |key, timeout|
    self.delete(key)
  end
  self.delete(:cache)
  self.save
end

#set_cache_timeout(key, timeout) ⇒ Object



11
12
13
14
15
# File 'lib/remember-the-ruby/storage.rb', line 11

def set_cache_timeout(key, timeout)
  self[:cache] ||= {}
  self[:cache][key] ||= Time.now + timeout
  self.save
end