module MethodCacher

Helper module for caching methods inside a class To use, extend your class with MethodCacher Then, in initialize, call enable_caching

Public Instance Methods

enable_caching(methods, cache = nil) click to toggle source

Enable caching for the listed methods

# File lib/basiccache/methodcacher.rb, line 9
def enable_caching(methods, cache = nil)
  cache ||= BasicCache.new
  methods.each do |name|
    uncached_name = "#{name}_uncached".to_sym
    (class << self; self; end).class_eval do
      alias_method uncached_name, name
      define_method(name) do |*a, &b|
        cache.cache(name) { send uncached_name, *a, &b }
      end
    end
  end
end