oop/undef_method.rb

tests/_examples/oop/undef_method.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"