Sha256: 3cf01043583974cd97cdc4ac07aa597a0c9780a35004e1048192880b0605b645
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
module WillCache module Cacheable def expire_cache(method_name = nil, args = {}) with = args[:with] Rails.cache.delete(method_cache_key(method_name, with)) true end alias :clear_cache :expire_cache 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 Rails.cache.exist?(key) Rails.cache.read(key) else Rails.cache.write(key, do_send(method_name, with)) end end alias :caches :cached def fetch_cache(method_name, args = {}) with = args[:with] Rails.cache.read(method_cache_key(method_name, with)) end def write_cache(key, value, ttl = nil) Rails.cache.write(key, value, :expires_in => ttl) end def read_cache(key) Rails.cache.read(key) end def do_send(method_name, with) if with.blank? send(method_name) else send(method_name, with) end end 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}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
will_cache-0.0.5 | lib/will_cache/cacheable.rb |