module FastMemoize::ClassMethods
Public Instance Methods
memoize(method)
click to toggle source
# File lib/fast_memoize.rb, line 12 def memoize(method) raise ParameterizedMethodError.new("Can't memoize a parameterized method") if instance_method(method).arity > 0 alias_method :"memoized_#{method}", method class_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{method} return @#{method} if defined?(@#{method}) @#{method} = memoized_#{method} end METHOD rescue NameError raise UndefinedMethodError.new("Can't memoize undefined method: #{method}") end