mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user