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