Browse files

Don't do remove_possible_method when delegate is used. Two reasons: 1…

…) warnings should be shown, and fixed at the source and 2) the code is slow. Fixes #1937.
  • Loading branch information...
1 parent 5679308 commit 2b33d05c24e719616955bc039e4871ebce91d215 @jonleighton jonleighton committed Jul 18, 2011
View
3 actionpack/lib/abstract_controller/layouts.rb
@@ -139,7 +139,7 @@ module AbstractController
#
# end
#
- # This will assign "weblog_standard" as the WeblogController's layout for all actions except for the +rss+ action, which will
+ # This will assign "weblog_standard" as the WeblogController's layout for all actions except for the +rss+ action, which will
# be rendered directly, without wrapping a layout around the rendered view.
#
# Both the <tt>:only</tt> and <tt>:except</tt> condition can accept an arbitrary number of method references, so
@@ -167,6 +167,7 @@ module Layouts
included do
class_attribute :_layout_conditions
+ remove_possible_method :_layout_conditions
delegate :_layout_conditions, :to => :'self.class'
self._layout_conditions = {}
_write_layout_method
View
4 activesupport/lib/active_support/core_ext/module/delegation.rb
@@ -127,10 +127,6 @@ def delegate(*methods)
end
module_eval(<<-EOS, file, line - 5)
- if instance_methods(false).map(&:to_s).include?("#{prefix}#{method}")
- remove_possible_method("#{prefix}#{method}")
- end
-
def #{prefix}#{method}(*args, &block) # def customer_name(*args, &block)
#{to}.__send__(#{method.inspect}, *args, &block) # client.__send__(:name, *args, &block)
rescue NoMethodError # rescue NoMethodError

0 comments on commit 2b33d05

Please sign in to comment.