タイトル通りなのですが、メソッドの呼び出し直後と終了直後をhookしてログを出力したいなぁと考え、ちょっとやってみました。
アイディア
メタプログラミングRubyを読むと既存のメソッドを壊さずに新しい処理を埋め込むには、aliasを使うというアイディアがありました。
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/08/28
- メディア: 大型本
- 購入: 18人 クリック: 533回
- この商品を含むブログ (124件) を見る
実装
それを元に色々とやってみると、次のようなコードになりました。
メソッドの呼び出し直後と終了直後にログを出力したい(解決編)
予め決まったメソッド名でしたら単にaliasで定義すればよいのですが、メソッド名が分からないものに対してどうやって処理を埋め込もうか、色々悩んで次のような実装になりました。
今のところ、インスタンスメソッドしか対応できていないので、クラスメソッドにも対応しておこうかなと思っています。