oop/extended_hook.rb

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

$order = []

module Tracker
  def self.extend_object obj
    $order << :extend_object
  end

  def self.extended obj
    $order << :extended
  end
end

module Plain
  def self.extended obj
    $order << [:plain_extended, obj.class]
  end
end

Object.new.extend Tracker
Object.new.extend Plain
puts $order.inspect

names = Module.new.private_methods
puts names.include?(:extended).inspect
puts names.include?(:extend_object).inspect
puts Class.new.private_methods.include?(:extended).inspect

Output:

[:extend_object, :extended, [:plain_extended, Object]]
true
true
true