11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/sometimes_memoize.rb', line 11
def sometimes_memoize(method_name)
original_method_name = "#{method_name}_unmemoized"
alias_method original_method_name, method_name
self.sometimes_memoized_instance_variable_names << method_name
define_method method_name do
if self.currently_memoizing?
if (val = self.instance_variable_get("@#{method_name}")).nil?
val = self.send(original_method_name)
self.instance_variable_set("@#{method_name}", val)
end
val
else
self.send(original_method_name)
end
end
end
|