Class: Pinky::Cache

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/pinky/cache.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#nameObject (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_cacheObject



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

Returns:

  • (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