aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-03-19 12:01:48 +0100
committerJosé Valim <jose.valim@gmail.com>2010-03-19 12:01:48 +0100
commitfbe35656a95228f760a2cd09676423ba41fe70ab (patch)
treec250acd14fa2fead65ba64a7d2b7cfab84dda782 /activesupport/lib/active_support/core_ext
parentb395c81e3c56f03a1a49f470883507eb70bb5cb3 (diff)
downloadrails-fbe35656a95228f760a2cd09676423ba41fe70ab.tar.gz
rails-fbe35656a95228f760a2cd09676423ba41fe70ab.tar.bz2
rails-fbe35656a95228f760a2cd09676423ba41fe70ab.zip
Singleton classes returns parent's methods with instance_methods(false) and this makes remove_method in Module#delegate fail. Add a test case and fix the bug.
Diffstat (limited to 'activesupport/lib/active_support/core_ext')
-rw-r--r--activesupport/lib/active_support/core_ext/module/delegation.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/core_ext/module/delegation.rb b/activesupport/lib/active_support/core_ext/module/delegation.rb
index d78cecc390..db6aea9b87 100644
--- a/activesupport/lib/active_support/core_ext/module/delegation.rb
+++ b/activesupport/lib/active_support/core_ext/module/delegation.rb
@@ -1,3 +1,5 @@
+require "active_support/core_ext/module/remove_method"
+
class Module
# Provides a delegate class method to easily expose contained objects' methods
# as your own. Pass one or more methods (specified as symbols or strings)
@@ -121,7 +123,7 @@ class Module
module_eval(<<-EOS, file, line)
if instance_methods(false).map(&:to_s).include?("#{prefix}#{method}")
- remove_method("#{prefix}#{method}")
+ remove_possible_method("#{prefix}#{method}")
end
def #{prefix}#{method}(*args, &block) # def customer_name(*args, &block)