Module: ApmTraceable::Tracer::ClassMethods
- Defined in:
- lib/apm_traceable/tracer.rb
Overview
include先クラスで利用可能にするクラスメソッド群のモジュール
Instance Method Summary collapse
-
#trace_methods(*method_names) ⇒ Object
指定したメソッド群をトレース対象にする.
Instance Method Details
#trace_methods(*method_names) ⇒ Object
指定したメソッド群をトレース対象にする. 引数を複数指定すると、すべてのメソッドがそれぞれトレース対象になる.
fg. class Test
include DatadogTraceable
trace_methods :method_a, :method_b
end
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/apm_traceable/tracer.rb', line 23 def trace_methods(*method_names) # 計測対象をラップする必要があるため、計測対象メソッドと同名で計測用メソッドを定義したモジュールを生成する wrapper = Module.new do method_names.each do |method_name| define_method method_name do |*args, **, &block| trace_span(method_name.to_s) { super(*args, **, &block) } end end end # 計測対象メソッドより先に計測用メソッドが呼び出されないといけないため、 # prependして継承チェインの先頭側に追加する prepend(wrapper) end |