module SiteHub::Memoize
Public Instance Methods
memoize(*methods)
click to toggle source
# File lib/sitehub/memoize.rb, line 3 def memoize(*methods) methods.each do |method| method_alias = "_#{method}" alias_method method_alias, method define_memoized_method(method, method_alias) end end
Private Instance Methods
define_memoized_method(method, method_alias)
click to toggle source
# File lib/sitehub/memoize.rb, line 14 def define_memoized_method(method, method_alias) define_method(method) do |*args, &block| attribute = "@#{method}".gsub('?', 'question_mark') return instance_variable_get(attribute) if instance_variable_defined? attribute send(method_alias, *args, &block).tap do |result| instance_variable_set(attribute, result) end end end