Rubyでメソッドの呼び出し直後と終了直後をhookしてログを出力したい

タイトル通りなのですが、メソッドの呼び出し直後と終了直後をhookしてログを出力したいなぁと考え、ちょっとやってみました。

やりたいこと

やりたいのは次のようなこと。


メソッドの呼び出し直後と終了直後にログを出力したい

アイディア

メタプログラミングRubyを読むと既存のメソッドを壊さずに新しい処理を埋め込むには、aliasを使うというアイディアがありました。

メタプログラミングRuby

メタプログラミングRuby

実装

それを元に色々とやってみると、次のようなコードになりました。


メソッドの呼び出し直後と終了直後にログを出力したい(解決編)

予め決まったメソッド名でしたら単にaliasで定義すればよいのですが、メソッド名が分からないものに対してどうやって処理を埋め込もうか、色々悩んで次のような実装になりました。

今のところ、インスタンスメソッドしか対応できていないので、クラスメソッドにも対応しておこうかなと思っています。