Ruby で特異メソッドを定義した際に処理をフックする
Ruby で特異メソッドを定義した際に処理をフックする場合、『インスタンスメソッド』に #singleton_method_added
を定義します。
[コード]
class X # インスタンスメソッドに singleton_method_added を追加する def singleton_method_added name p name end # インスタンスメソッドを定義しても呼び出されない def homu end end x = X.new # 特異メソッドを定義したら #singleton_method_added が呼び出される def x.mami end
[出力]
:mami
インスタンスメソッド定義時に処理をフックする .method_added
とは違い、クラスの『インスタンスメソッド』として定義する違いがあるので注意。