Module: ActiveMemoize::Klass

Includes:
Shared
Defined in:
lib/active_memoize/klass.rb

Instance Method Summary collapse

Methods included from Shared

#cache, #key

Instance Method Details

#memoize(method_name, as: nil) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/active_memoize/klass.rb', line 7

def memoize(method_name, as: nil)
  inner_method = instance_method(method_name)

  define_method(method_name) do |*args|
    key = self.class.key(as || method_name, args)
    self.class.cache[key] ||= inner_method.bind(self).call(*args)
  end
end