oop/remove_method_parens.rb
tests/_examples/oop/remove_method_parens.rb in the metorex repository.
class Parent
def inherited_method
:parent
end
end
class Child < Parent
def first
:first
end
def second
:second
end
end
puts(Child.send(:remove_method, :first, :second).inspect)
puts(Child.instance_methods(false).inspect)
puts(Child.new.inherited_method.inspect)
begin
Child.send(:remove_method, :inherited_method)
rescue NameError
puts "inherited: NameError"
end
begin
Child.send(:remove_method, :never_defined)
rescue NameError
puts "missing: NameError"
end
puts(Child.send(:remove_method).inspect)
frozen = Module.new do
def doomed
end
end
frozen.freeze
begin
frozen.send(:remove_method, :doomed)
rescue FrozenError
puts "frozen: FrozenError"
end
puts((frozen.send(:remove_method) == frozen).inspect)
puts(Module.instance_method(:remove_method).arity.inspect)
puts(Module.public_instance_methods.include?(:remove_method).inspect)
Output:
Child
[]
:parent
inherited: NameError
missing: NameError
Child
frozen: FrozenError
true
-1
true