Ruby でフックできるイベントを調べてみました。
イベント一覧
メソッド一覧
| メソッド名 | 呼び出されるタイミング |
|---|---|
| method_missing | 存在しないメソッドが呼び出された時 |
| const_missing | 存在しない定数を参照した時 |
| respond_to_missing? |
respond_to? の結果が false の時 |
| method_added | メソッドが追加された時 |
| method_removed | メソッドが remove_method によって削除された時 |
| method_undefined | メソッドが undef_method か undef によって削除された時 |
| singleton_method_added | 特異メソッドが追加された時 |
| singleton_method_removed | 特異メソッドが remove_method によって削除された時 |
| singleton_method_undefined | 特異メソッドが undef_method か undef によって削除された時 |
| prepend_features |
Module#prepend の実体 |
| prepended |
Module#prepend した後 |
| append_features |
Module#include の実体 |
| included |
Module#include した後 |
| extend_object |
Object#extend の実体 |
| extended |
Object#extend した後 |
| inherited | クラスのサブクラスが定義された時 |
| at_exit | プログラム終了時 |
TracePoint イベント一覧
TracePoint でフックできるイベントは以下のようになっています。
| イベント | 説明 |
|---|---|
| :line | 式の評価 |
| :class | クラス定義、特異クラス定義、モジュール定義への突入 |
| :end | クラス定義、特異クラス定義、モジュール定義の終了 |
| :call | Ruby で記述されたメソッドの呼び出し |
| :return | Ruby で記述されたメソッド呼び出しからのリターン |
| :c_call | Cで記述されたメソッドの呼び出し |
| :c_return | Cで記述されたメソッド呼び出しからのリターン |
| :raise | 例外の発生 |
| :b_call | ブロックの開始 |
| :b_return | ブロックの終了 |
| :thread_begin | スレッドの開始 |
| :thread_end | スレッドの終了 |
| :fiber_switch | ファイバーの切り替え |
| :script_compiled | スクリプトが ISeq に変換された後 |
TracePoint のサンプルコードについては Ruby の TracePoint について調べてみた#トレース出来るイベントの種類 を参照して下さい。
set_trace_func でも同様なイベントが取得可能ですが、 TracePoint に比べると取得出来るイベントの種類も少ない & 使い勝手が悪いので今はあまり使われていないかもしれません。
変数のトレース
| メソッド名 | 説明 | 備考 |
|---|---|---|
| trace_var | グローバル変数のトレース | Rubyのグローバル変数をトレースする |