mirror of https://github.com/rails/rails
remove_possible_method: test if method exists
This speeds up remove_possible_method substantially since it doesn't have to rescue a NameError in the common case. Closes #2346.
This commit is contained in:
parent
4c85c4ed95
commit
7f88539087
|
@ -1,11 +1,16 @@
|
|||
class Module
|
||||
def remove_possible_method(method)
|
||||
remove_method(method)
|
||||
if method_defined?(method) || private_method_defined?(method)
|
||||
remove_method(method)
|
||||
end
|
||||
rescue NameError
|
||||
# If the requested method is defined on a superclass or included module,
|
||||
# method_defined? returns true but remove_method throws a NameError.
|
||||
# Ignore this.
|
||||
end
|
||||
|
||||
def redefine_method(method, &block)
|
||||
remove_possible_method(method)
|
||||
define_method(method, &block)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue