metaprogramming/const_added_hook_parens.rb

tests/_examples/metaprogramming/const_added_hook_parens.rb in the metorex repository.

class Tracker
  ADDED = []

  def self.const_added(name)
    ADDED << name
    puts(ADDED.inspect)
  end

  TEST = 1
  SECOND = 2

  autoload(:Autoload, "tracker/autoload.rb")

  class Child
  end
end

Tracker.const_set(:DIRECT, 4)

Output:

[:TEST]
[:TEST, :SECOND]
[:TEST, :SECOND, :Autoload]
[:TEST, :SECOND, :Autoload, :Child]
[:TEST, :SECOND, :Autoload, :Child, :DIRECT]