Sha256: 43addebbbf13e72cd663e4f137f2c4ef71d1fbbdf3e1c22a32e312d4ef5b510b

Contents?: true

Size: 721 Bytes

Versions: 7

Compression:

Stored size: 721 Bytes

Contents

# frozen_string_literal: true

class RailsTransactionalOutbox
  module Tracers
    class DatadogTracer
      SERVICE_NAME = "rails_transactional_outbox_worker"
      private_constant :SERVICE_NAME

      def self.service_name
        SERVICE_NAME
      end

      def trace(event_name)
        tracer.trace(event_name, span_type: "worker", service: self.class.service_name,
          on_error: error_handler) do |_span|
          yield
        end
      end

      private

      def tracer
        if Datadog.respond_to?(:tracer)
          Datadog.tracer
        else
          Datadog::Tracing
        end
      end

      def error_handler
        ->(span, error) { span.set_error(error) }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rails-transactional-outbox-1.0.0 lib/rails_transactional_outbox/tracers/datadog_tracer.rb
rails-transactional-outbox-0.4.0 lib/rails_transactional_outbox/tracers/datadog_tracer.rb
rails-transactional-outbox-0.3.1 lib/rails_transactional_outbox/tracers/datadog_tracer.rb
rails-transactional-outbox-0.3.0 lib/rails_transactional_outbox/tracers/datadog_tracer.rb
rails-transactional-outbox-0.2.1 lib/rails_transactional_outbox/tracers/datadog_tracer.rb
rails-transactional-outbox-0.2.0 lib/rails_transactional_outbox/tracers/datadog_tracer.rb
rails-transactional-outbox-0.1.0 lib/rails_transactional_outbox/tracers/datadog_tracer.rb