けど無理っぽいので本体改造してみた Module#const_addedを定義しておいて、定数定義する関数の本体が rb_const_set(VALUE klass, ID id, VALUE val) なので、そこに細工して定数セット後に const_added を呼んでやればOK。 ただしrb_const_setはRuby起動時のクラス階層初期化時にも呼ばれるので、その際はスルーする必要がある。 というわけでこうするとよさそうだった。 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"