module OpenTracing::Instrumented::ClassMethods

Public Instance Methods

traced(*method_names) click to toggle source

Wraps a method and traces its call. The span's operation name will be <class name>.<method name>.

@param [Array<Symbol>] method_name

Calls superclass method
# File lib/opentracing/instrumented.rb, line 15
def traced(*method_names)
  proxy = Module.new

  method_names.each do |method_name|
    operation_name = "#{name}.#{method_name}"
    proxy.define_method(method_name) do |*args, &block|
      ret = nil

      OpenTracing.start_active_span(operation_name) do
        ret = super(*args, &block)
      end

      ret
    end
  end

  prepend proxy
end