Module: SometimesMemoize::ClassMethods

Defined in:
lib/sometimes_memoize.rb

Instance Method Summary collapse

Instance Method Details

#sometimes_memoize(method_name) ⇒ Object



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

#sometimes_memoized_instance_variable_namesObject



7
8
9
# File 'lib/sometimes_memoize.rb', line 7

def sometimes_memoized_instance_variable_names
  @sometimes_memoized_instance_variable_names ||= []
end