module Datadog::Annotation::Decorator
Adds tracer to annotated methods
Public Instance Methods
__trace(method:, service:, resource: "
click to toggle source
Adds method to list of traced methods @param method [Symbol] name of the method to be traced @param service [String] the service name for span @param resource [String || Proc] the resource in which the current span refers @param metadata_proc [Proc] Block which sets tags into current trace.
It receives original args, result of the traced method and span
@see Datadog::Annotation::Tracer.trace
# File lib/ddtrace/annotation/decorator.rb, line 17 def __trace(method:, service:, resource: "#{self}##{method}", metadata_proc: nil) return unless datadog_enabled? validate_metadata_proc!(metadata_proc) @traced_methods[method.to_sym] = { service: service, resource: resource, metadata_proc: metadata_proc, defined?: false } end
method_added(name)
click to toggle source
Calls superclass method
# File lib/ddtrace/annotation/decorator.rb, line 30 def method_added(name) super return if !@traced_methods.key?(name) || @traced_methods.dig(name, :defined?) @traced_methods[name][:defined?] = true method = instance_method(name) trace_info = @traced_methods[name] define_method(name) do |*args, &block| Annotation::Tracer.trace( method: method.bind(self), trace_info: trace_info, args: args, &block ) end end
Private Instance Methods
datadog_enabled?()
click to toggle source
# File lib/ddtrace/annotation/decorator.rb, line 52 def datadog_enabled? Datadog.respond_to?(:tracer) && Datadog.tracer.enabled end
validate_metadata_proc!(metadata_proc)
click to toggle source
# File lib/ddtrace/annotation/decorator.rb, line 56 def validate_metadata_proc!(metadata_proc) return if metadata_proc.nil? raise Errors::InvalidProc, "MetadataProc must be a Proc" unless metadata_proc.is_a?(Proc) end