Module: WillCache::Cacheable
- Included in:
- ClassMethods, InstanceMethods
- Defined in:
- lib/will_cache/cacheable.rb
Instance Method Summary collapse
- #cache_exist?(key) ⇒ Boolean
- #cached(method_name, args = {}) ⇒ Object (also: #caches)
- #delete_cache(key) ⇒ Object
- #do_send(method_name, with) ⇒ Object
- #expire_cache(method_name = nil, args = {}) ⇒ Object (also: #clear_cache)
- #fetch_cache(method_name, args = {}) ⇒ Object
- #method_cache_key(method_name, with) ⇒ Object
- #read_cache(key) ⇒ Object
- #refresh_cache(method_name = nil, args = {}) ⇒ Object
- #write_cache(key, value) ⇒ Object
Instance Method Details
#cache_exist?(key) ⇒ Boolean
48 49 50 |
# File 'lib/will_cache/cacheable.rb', line 48 def cache_exist?(key) Rails.cache.exist?(key) end |
#cached(method_name, args = {}) ⇒ Object Also known as: caches
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/will_cache/cacheable.rb', line 10 def cached(method_name, args = {}) with = args[:with] # Rails.fetch is broken # http://developingsimplicity.com/posts/rails-cache-fetch key = method_cache_key(method_name, with) if cache_exist?(key) read_cache(key) else write_cache(key, do_send(method_name, with)) end end |
#delete_cache(key) ⇒ Object
43 44 45 46 |
# File 'lib/will_cache/cacheable.rb', line 43 def delete_cache(key) Rails.cache.delete(key) true end |
#do_send(method_name, with) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/will_cache/cacheable.rb', line 65 def do_send(method_name, with) if with.blank? send(method_name) else send(method_name, *with) end end |
#expire_cache(method_name = nil, args = {}) ⇒ Object Also known as: clear_cache
4 5 6 7 |
# File 'lib/will_cache/cacheable.rb', line 4 def expire_cache(method_name = nil, args = {}) with = args[:with] delete_cache(method_cache_key(method_name, with)) end |
#fetch_cache(method_name, args = {}) ⇒ Object
29 30 31 32 |
# File 'lib/will_cache/cacheable.rb', line 29 def fetch_cache(method_name, args = {}) with = args[:with] read_cache(method_cache_key(method_name, with)) end |
#method_cache_key(method_name, with) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/will_cache/cacheable.rb', line 52 def method_cache_key(method_name, with) if self.is_a?(ActiveRecord::Base) base = [self.class, id, method_name].compact.join(':').gsub(' ', '_') else base = "#{self}:#{method_name}" end if with.blank? base else "#{base}:#{with.inspect}" end end |
#read_cache(key) ⇒ Object
39 40 41 |
# File 'lib/will_cache/cacheable.rb', line 39 def read_cache(key) Rails.cache.read(key) end |
#refresh_cache(method_name = nil, args = {}) ⇒ Object
24 25 26 27 |
# File 'lib/will_cache/cacheable.rb', line 24 def refresh_cache(method_name = nil, args = {}) expire_cache(method_name, args) cached(method_name, args) end |
#write_cache(key, value) ⇒ Object
34 35 36 37 |
# File 'lib/will_cache/cacheable.rb', line 34 def write_cache(key, value) Rails.cache.write(key, value) value end |