oop/method_added_hook_parens.rb

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

$events = []

class Parent
  def inherited_method
  end
end

class Tracked < Parent
  def self.method_added(name)
    $events << [:added, name]
  end

  def self.singleton_method_added(name)
    $events << [:singleton, name]
  end

  def first
  end

  alias_method(:aliased, :first)
  alias aliased_again first

  private(:inherited_method)
  public(:inherited_method)

  def retired
  end
  undef_method(:retired)
end

puts($events.inspect)
puts(Tracked.method_defined?(:retired).inspect)
puts(Tracked.instance_methods(false).sort.inspect)
puts(Module.new.method_added(:anything).inspect)
puts(Module.private_instance_methods.include?(:method_added).inspect)

Output:

[[:singleton, :singleton_method_added], [:added, :first], [:added, :aliased], [:added, :aliased_again], [:added, :inherited_method], [:added, :retired]]
false
[:aliased, :aliased_again, :first, :inherited_method]
nil
true