class Datadog::Pin

A Pin (a.k.a Patch INfo) is a small class which is used to set tracing metadata on a particular traced object. This is useful if you wanted to, say, trace two different database clusters.

Constants

DEPRECATION_WARNING

Attributes

app[RW]
app_type[RW]
config[RW]
name[RW]
service=[RW]
service_name[RW]
tags[RW]
tracer[R]
writer[RW]

Public Class Methods

get_from(obj) click to toggle source
# File lib/ddtrace/pin.rb, line 10
def self.get_from(obj)
  return nil unless obj.respond_to? :datadog_pin
  obj.datadog_pin
end
new(service_name, options = {}) click to toggle source
# File lib/ddtrace/pin.rb, line 27
def initialize(service_name, options = {})
  deprecation_warning unless options[:tracer].is_a?(Proc) || options[:tracer].nil?

  @app = options[:app]
  @app_type = options[:app_type]
  @config = options[:config]
  @name = nil # this would rarely be overriden as it's really span-specific
  @service_name = service_name
  @tags = options[:tags]
  @tracer = options[:tracer]
end

Public Instance Methods

datadog_pin() click to toggle source
# File lib/ddtrace/pin.rb, line 60
def datadog_pin
  @datadog_pin
end
datadog_pin=(pin) click to toggle source
# File lib/ddtrace/pin.rb, line 52
def datadog_pin=(pin)
  @datadog_pin = pin
end
enabled?() click to toggle source
# File lib/ddtrace/pin.rb, line 43
def enabled?
  return tracer.enabled if tracer
  false
end
onto(obj) click to toggle source

rubocop:disable Style/TrivialAccessors

# File lib/ddtrace/pin.rb, line 49
def onto(obj)
  unless obj.respond_to? :datadog_pin=
    obj.instance_exec do
      def datadog_pin=(pin)
        @datadog_pin = pin
      end
    end
  end

  unless obj.respond_to? :datadog_pin
    obj.instance_exec do
      def datadog_pin
        @datadog_pin
      end
    end
  end

  obj.datadog_pin = self
end
to_s() click to toggle source
# File lib/ddtrace/pin.rb, line 69
def to_s
  "Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
end

Private Instance Methods

deprecation_warning() click to toggle source
# File lib/ddtrace/pin.rb, line 81
def deprecation_warning
  log_deprecation_warning('Datadog::Pin.new')
end
log_deprecation_warning(method_name) click to toggle source
# File lib/ddtrace/pin.rb, line 87
def log_deprecation_warning(method_name)
  # Only log each deprecation warning once (safeguard against log spam)
  do_once(method_name) do
    Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
  end
end