Class: Pinky::Cache
- Inherits:
-
Object
- Object
- Pinky::Cache
- Extended by:
- Forwardable
- Defined in:
- lib/pinky/cache.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #clear_cache ⇒ Object
-
#initialize(*item_methods) ⇒ Cache
constructor
A new instance of Cache.
- #query(query_hash = {}) ⇒ Object
- #queryable_for?(query_hash) ⇒ Boolean
- #update_with(item, action = :create) ⇒ Object
Constructor Details
#initialize(*item_methods) ⇒ Cache
Returns a new instance of Cache.
14 15 16 17 |
# File 'lib/pinky/cache.rb', line 14 def initialize(*item_methods) @item_methods = item_methods.flatten.sort @name = self.class.name_for(@item_methods) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/pinky/cache.rb', line 5 def name @name end |
Class Method Details
.name_for(*methods) ⇒ Object
9 10 11 |
# File 'lib/pinky/cache.rb', line 9 def name_for(*methods) "cache_by_#{methods.flatten.sort.join("_and_")}" end |
Instance Method Details
#clear_cache ⇒ Object
37 38 39 |
# File 'lib/pinky/cache.rb', line 37 def clear_cache @cache = nil end |
#query(query_hash = {}) ⇒ Object
32 33 34 35 |
# File 'lib/pinky/cache.rb', line 32 def query(query_hash = {}) key = query_hash.sort.map { |k,v| v }.join '.' cache[key] end |
#queryable_for?(query_hash) ⇒ Boolean
19 20 21 |
# File 'lib/pinky/cache.rb', line 19 def queryable_for?(query_hash) query_hash.keys.sort == @item_methods end |
#update_with(item, action = :create) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/pinky/cache.rb', line 23 def update_with(item, action = :create) key = key_for item if action == :destroy cache.delete key else cache[key] = item end end |