Sha256: bdbe95658cd55cf2464ca398457ea1a852cb49c17ad70783fe4d8605e3836f60

Contents?: true

Size: 915 Bytes

Versions: 1

Compression:

Stored size: 915 Bytes

Contents

# frozen_string_literal: true

module Minato
  module Trace
    module Middleware
      class DistributedTraceContext
        TRACE_HEADER_KEY = "X-Cloud-Trace-Context"

        def initialize(app)
          @app = app
        end

        def call(env)
          add_trace_context_header(env)

          @app.call(env)
        end

        private

        def add_trace_context_header(env)
          return unless Rails.env.production? && Minato::Trace.enabled?

          return if current_cloud_trace.nil?

          env.request_headers.merge!({ "#{TRACE_HEADER_KEY}": "#{current_cloud_trace.trace.trace_id};o=1" })
        end

        def current_cloud_trace
          @current_cloud_trace ||= current_trace_from_google_cloud
        end

        def current_trace_from_google_cloud
          _trace_client = Google::Cloud::Trace.new
          Google::Cloud::Trace.get
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
minato-trace-0.1.6.pre.8 lib/minato/trace/middleware/distributed_trace_context.rb