Class: RememberTheRuby::Storage
- Inherits:
-
Preferences::Manager
- Object
- Preferences::Manager
- RememberTheRuby::Storage
- Defined in:
- lib/remember-the-ruby/storage.rb
Instance Method Summary collapse
- #[](key) ⇒ Object
- #cache_timeout_for(key) ⇒ Object
-
#initialize ⇒ Storage
constructor
A new instance of Storage.
- #original_reader ⇒ Object
- #purge_cache! ⇒ Object
- #set_cache_timeout(key, timeout) ⇒ Object
Constructor Details
#initialize ⇒ Storage
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_reader ⇒ Object
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 |