Ruby、method_addeみたいに定数が定義されたときフックしたい

けど無理っぽいので本体改造してみた

Module#const_addedを定義しておいて、定数定義する関数の本体が rb_const_set(VALUE klass, ID id, VALUE val) なので、そこに細工して定数セット後に const_added を呼んでやればOK。
ただしrb_const_setRuby起動時のクラス階層初期化時にも呼ばれるので、その際はスルーする必要がある。

というわけでこうするとよさそうだった。
https://github.com/todesking/ruby/commit/ff4112340a149faf18cbe288fee02a419f801bcc

class A
  def self.const_added(id)
    puts "#{self}::#{id} added"
  end
end

A::X = 10
#=> "A::X added"

Rubyの改造、autoconfしてconfigureしてmakeすれば環境整うし、ctagsとvimのタグジャンプがあればだいたいコード追えるのでわりと参入障壁低いかんじだった。皆さんもやってみるといいですよ。