module Memoize::ClassMethods

Public Instance Methods

memoize(name) click to toggle source
Calls superclass method
# File lib/dpl/helper/memoize.rb, line 7
def memoize(name)
  ivar = :"@#{name.to_s.sub('?', '_predicate')}"
  prepend Module.new {
    define_method(name) do |*args|
      raise ArgsError, 'cannot pass arguments to memoized method %p' % name unless args.empty?
      return instance_variable_get(ivar) if instance_variable_defined?(ivar)

      instance_variable_set(ivar, super())
    end
  }
end