diff options
author | Michael S. Klishin <michael@novemberain.com> | 2008-12-28 22:05:27 +0300 |
---|---|---|
committer | Michael S. Klishin <michael@novemberain.com> | 2008-12-28 22:05:43 +0300 |
commit | 12bff2af4081c25682d0466b1d7380b702c27417 (patch) | |
tree | 50f12abeb5dc70f4a847e8a960e2a60ee026ad97 /activesupport/lib/active_support/memoizable.rb | |
parent | 89e98955c79b39ec408efb39cde07d6f14997183 (diff) | |
parent | d77deb89d54b18c662ae3de103802e4d7a9d7d08 (diff) | |
download | rails-12bff2af4081c25682d0466b1d7380b702c27417.tar.gz rails-12bff2af4081c25682d0466b1d7380b702c27417.tar.bz2 rails-12bff2af4081c25682d0466b1d7380b702c27417.zip |
Sync with wycats/rails/master
Diffstat (limited to 'activesupport/lib/active_support/memoizable.rb')
-rw-r--r-- | activesupport/lib/active_support/memoizable.rb | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/activesupport/lib/active_support/memoizable.rb b/activesupport/lib/active_support/memoizable.rb index 9f2fd3a401..67ed10d58d 100644 --- a/activesupport/lib/active_support/memoizable.rb +++ b/activesupport/lib/active_support/memoizable.rb @@ -58,35 +58,35 @@ module ActiveSupport original_method = :"_unmemoized_#{symbol}" memoized_ivar = ActiveSupport::Memoizable.memoized_ivar_for(symbol) - class_eval <<-EOS, __FILE__, __LINE__ + class_eval <<-EOS, __FILE__, __LINE__ + 1 include InstanceMethods - raise "Already memoized #{symbol}" if method_defined?(:#{original_method}) - alias #{original_method} #{symbol} + raise "Already memoized #{symbol}" if method_defined?(:#{original_method}) # raise "Already memoized if_modified_since" if method_defined?(:__unmemoized_if_modified_since) + alias #{original_method} #{symbol} # alias __unmemoized_if_modified_since if_modified_since - if instance_method(:#{symbol}).arity == 0 - def #{symbol}(reload = false) - if reload || !defined?(#{memoized_ivar}) || #{memoized_ivar}.empty? - #{memoized_ivar} = [#{original_method}.freeze] - end - #{memoized_ivar}[0] - end - else - def #{symbol}(*args) - #{memoized_ivar} ||= {} unless frozen? - reload = args.pop if args.last == true || args.last == :reload - - if defined?(#{memoized_ivar}) && #{memoized_ivar} - if !reload && #{memoized_ivar}.has_key?(args) - #{memoized_ivar}[args] - elsif #{memoized_ivar} - #{memoized_ivar}[args] = #{original_method}(*args).freeze - end - else - #{original_method}(*args) - end - end - end + if instance_method(:#{symbol}).arity == 0 # if instance_method(:if_modified_since).arity == 0 + def #{symbol}(reload = false) # def if_modified_since(reload = false) + if reload || !defined?(#{memoized_ivar}) || #{memoized_ivar}.empty? # if reload || !defined?(@_memoized_if_modified_since) || @_memoized_if_modified_since.empty? + #{memoized_ivar} = [#{original_method}.freeze] # @_memoized_if_modified_since = [__unmemoized_if_modified_since.freeze] + end # end + #{memoized_ivar}[0] # @_memoized_if_modified_since[0] + end # end + else # else + def #{symbol}(*args) # def if_modified_since(*args) + #{memoized_ivar} ||= {} unless frozen? # @_memoized_if_modified_since ||= {} unless frozen? + reload = args.pop if args.last == true || args.last == :reload # reload = args.pop if args.last == true || args.last == :reload + # + if defined?(#{memoized_ivar}) && #{memoized_ivar} # if defined?(@_memoized_if_modified_since) && @_memoized_if_modified_since + if !reload && #{memoized_ivar}.has_key?(args) # if !reload && @_memoized_if_modified_since.has_key?(args) + #{memoized_ivar}[args] # @_memoized_if_modified_since[args] + elsif #{memoized_ivar} # elsif @_memoized_if_modified_since + #{memoized_ivar}[args] = #{original_method}(*args).freeze # @_memoized_if_modified_since[args] = __unmemoized_if_modified_since(*args).freeze + end # end + else # else + #{original_method}(*args) # __unmemoized_if_modified_since(*args) + end # end + end # end + end # end EOS end end |