Freeze memoized results when instance is frozen instead of immediately so you can memoize mutable objects

This commit is contained in:
Jeremy Kemper 2008-08-07 23:31:43 -07:00
parent a8057669ff
commit 6c70c02c83
1 changed files with 3 additions and 3 deletions

View File

@ -14,7 +14,7 @@ module ActiveSupport
methods.each do |method| methods.each do |method|
if method.to_s =~ /^_unmemoized_(.*)/ if method.to_s =~ /^_unmemoized_(.*)/
begin begin
__send__($1) __send__($1).freeze
rescue ArgumentError rescue ArgumentError
end end
end end
@ -41,7 +41,7 @@ module ActiveSupport
if !reload && defined? #{memoized_ivar} if !reload && defined? #{memoized_ivar}
#{memoized_ivar} #{memoized_ivar}
else else
#{memoized_ivar} = #{original_method}.freeze #{memoized_ivar} = #{original_method}
end end
end end
else else
@ -52,7 +52,7 @@ module ActiveSupport
if !reload && #{memoized_ivar} && #{memoized_ivar}.has_key?(args) if !reload && #{memoized_ivar} && #{memoized_ivar}.has_key?(args)
#{memoized_ivar}[args] #{memoized_ivar}[args]
else else
#{memoized_ivar}[args] = #{original_method}(*args).freeze #{memoized_ivar}[args] = #{original_method}(*args)
end end
end end
end end