Ruby でインスタンスメソッドが定義された時に処理をフックする
インスタンスメソッドが定義された時に処理をフックしたい場合、『クラスメソッド』に #method_added
を定義します。
[コード]
class X # クラスメソッドに method_added を追加する def self.method_added name p name end # インスタンスメソッドを定義した時に .method_added が呼ばれる def homu end # define_method や alias_method で新しいメソッドを生成した時にも呼ばれる define_method :mami do end alias_method :mado, :mami # 特異メソッドの場合は呼ばれない def self.saya end end
[出力]
:homu :mami :mado