Module: CacheMethod::ClassMethods

Defined in:
lib/cache_method.rb

Overview

All Classes (but not instances), get the .cache_method method.

Instance Method Summary collapse

Instance Method Details

#cache_method(method_id, ttl = nil) ⇒ Object

Cache a method. TTL in seconds, defaults to whatever’s in CacheMethod.config.default_ttl

Note: Remember to define #hash on any object whose instance methods might get cached.

Note 2: Check out CacheMethod.config.default_ttl… the default is 24 hours.

Example:

class Blog
  # [...]
  def get_latest_entries
    sleep 5
  end
  # [...]
  cache_method :get_latest_entries
  # if you wanted a different ttl...
  # cache_method :get_latest_entries, 800 #seconds
end


56
57
58
59
60
61
62
# File 'lib/cache_method.rb', line 56

def cache_method(method_id, ttl = nil)
  original_method_id = "_uncached_#{method_id}"
  alias_method original_method_id, method_id
  define_method method_id do |*args|
    ::CacheMethod::CachedResult.fetch :obj => self, :method_id => method_id, :original_method_id => original_method_id, :ttl => ttl, :args => args
  end
end