概要 最近読んだRuby: Module.#prepend でメソッド呼び出しをフックという記事の手法をベースにメソッドをフックしてログを仕込んだりする手法を考えてみます。 この記事の手法を利用すると、任意のクラスの任意のメソッドをフックして、前後に処理を挿入することができます。 フックは好きな順番、好きな個数を設定できます。 人によっては、これをAOP(アスペクト指向プログラミング)のような何かだと考えるかもしれません。 実装手順 Objectを拡張して、フックを簡単に追加できるようにする。 フックする処理を記述するモジュール(以降、フックモジュールと呼ぶ)を定義する。 フックモジュールをObjectに登録し、任意のクラスにフック処理を追加できるようにする。 フックしたい対象のクラスに、フックしたいメソッドを指定した記述を追加する。 1. Objectにフック追加メソッドを定義 Obje