lib/memoist.rb in memoist-0.9.2 vs lib/memoist.rb in memoist-0.9.3

- old
+ new

@@ -76,11 +76,11 @@ end.compact end method_names.each do |method_name| ivar = Memoist.memoized_ivar_for(method_name) - instance_variable_get(ivar).clear if instance_variable_defined?(ivar) + remove_instance_variable(ivar) if instance_variable_defined?(ivar) end end end def memoize(*method_names) @@ -103,39 +103,39 @@ if instance_method(method_name).arity == 0 # define a method like this; # def mime_type(reload=true) - # skip_cache = reload || !memoized?(:abc) + # skip_cache = reload || !instance_variable_defined?("@_memoized_mime_type") # set_cache = skip_cache && !frozen? # # if skip_cache # value = _unmemoized_mime_type # else - # value = @_memoized_mime_type[0] + # value = @_memoized_mime_type # end # # if set_cache - # @_memoized_mime_type = [value] + # @_memoized_mime_type = value # end # # value # end module_eval <<-EOS, __FILE__, __LINE__ + 1 def #{method_name}(reload = false) - skip_cache = reload || !defined?(#{memoized_ivar}) || #{memoized_ivar}.empty? + skip_cache = reload || !instance_variable_defined?("#{memoized_ivar}") set_cache = skip_cache && !frozen? if skip_cache value = #{unmemoized_method} else - value = #{memoized_ivar}[0] + value = #{memoized_ivar} end if set_cache - #{memoized_ivar} = [value] + #{memoized_ivar} = value end value end EOS @@ -165,10 +165,10 @@ module_eval <<-EOS, __FILE__, __LINE__ + 1 def #{method_name}(*args) reload = Memoist.extract_reload!(method(#{unmemoized_method.inspect}), args) - skip_cache = reload || !(defined?(#{memoized_ivar}) && #{memoized_ivar} && #{memoized_ivar}.has_key?(args)) + skip_cache = reload || !(instance_variable_defined?(#{memoized_ivar.inspect}) && #{memoized_ivar} && #{memoized_ivar}.has_key?(args)) set_cache = skip_cache && !frozen? if skip_cache value = #{unmemoized_method}(*args) else