ActiveSupport::Notifications::Instrumenter

目次

試した環境

$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
$ bundle exec ruby -r active_support -e 'puts ActiveSupport::VERSION::STRING'
4.0.0

Fanout のFacade のような役割を果すinstrument メソッドをもつ。 Activesupport::Notifications#insturument はこのメソッドを利用する。 Fanout への呼び出しで利用するIDの生成も行う。 ブロックに渡した処理の例外は payload[:exception] に格納され伝搬される。

また、Notification の発生したイベントの記録、親子関係を保持するための Activesupport::Notification::Event クラスも実装されています。

Activesupport::Notifications::Insturument

#initialize

instrument をするためのオブジェクトを引数 notifierから受けとる。 このオブジェクトには start finishを呼びだす。 また、Notification を呼際に利用するユニークIDの作成も行う。

#instrument

name と payload で subsciber への呼び出しを行う. start し、渡されたブロックを処理し、finish を実行する。

#start

@notifier へ処理を委譲する。

#finish

@notifier へ処理を委譲する。

id

ユニークなIDを保持していて、これを返します。

Activesupport::Notification::Event

#initialize

Notificetaion からコールバックされてくる値を保持するクラス。

#duration

処理かかった時間を ms で返す

#<<

引数event を子イベントとして追加します。

#parent_of?

引数event の親かどうか確認します。

name

通知のキーを返します。

time

処理の開始時間を返します。

transaction_id

呼び出した Insturumenter の ユニークIDです。

payload

付加的な情報を引数として値をまとめたものです。

children

子イベントの一覧を替えします。

end

処理の終了時刻を返します。