Project

General

Profile

Bug #5015

method_added" is called in addition to "method_undefined

Added by lazaridis.com (Lazaridis Ilias) almost 9 years ago. Updated almost 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
1.9.2
Backport:
[ruby-core:<unknown>]

Description

When a method is undefined via "undef_method :any_method", the following methods are called back:

  • method_added
  • method_undefined

The expected behaviour is that only "method_undefined" is called (similar to "remove_method").

-

class String

def self.method_added(id)
puts "callback: added #{id.id2name}"
end

def self.method_undefined(id)
puts "callback: undefined #{id.id2name}"
end

def self.method_removed(id)

puts "callback: removed #{id.id2name}"
end

end

puts "\nundef method (buildin)"
class String
undef_method :capitalize
end

puts "\ndefine method"
class String
def any_method(*args)
nil
end
end

puts "\nundef method"
class String
undef_method :any_method
end

puts "\ndefine method"
class String
def any_method(*args)
nil
end
end

puts "\nremove method"
class String
remove_method :any_method
end

-

OUTPUT:

undef method (buildin)
callback: added capitalize
callback: undefined capitalize

define method
callback: added any_method

undef method
callback: added any_method
callback: undefined any_method

define method
callback: added any_method

remove method
callback: removed any_method


Files

method_added_callback.diff (1001 Bytes) method_added_callback.diff lazaridis.com (Lazaridis Ilias), 07/12/2011 04:18 AM

Also available in: Atom PDF