oop/undef_method_parens.rb

tests/_examples/oop/undef_method_parens.rb in the metorex repository.

class Parent
  def inherited_method
    :parent
  end
end

class Child < Parent
  def own
    :own
  end
end

puts(Child.send(:undef_method, :own, :inherited_method).inspect)
puts(Child.new.respond_to?(:own).inspect)
puts(Parent.new.inherited_method.inspect)

begin
  Child.send(:undef_method, :never_defined)
rescue NameError => error
  puts(error.message)
end

begin
  String.singleton_class.send(:undef_method, :not_exist)
rescue NameError => error
  puts(error.message)
end

puts(Child.send(:undef_method).inspect)

frozen = Module.new do
  def doomed
  end
end
frozen.freeze

begin
  frozen.send(:undef_method, :doomed)
rescue FrozenError
  puts "frozen: FrozenError"
end

target = "World"
pattern = /Hello #{target}/
puts(pattern.inspect)
puts((pattern === "Hello World").inspect)
puts(Regexp.escape("a.b*c").inspect)

Output:

Child
false
:parent
undefined method 'never_defined' for class 'Child'
undefined method 'not_exist' for class 'String'
Child
frozen: FrozenError
/Hello World/
true
"a\\.b\\*c"