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のグローバル変数をトレースする |