Sha256: ff860347295ab1138d638d9468690743351d1dc1c5d09d1dede5ca301a38e936

Contents?: true

Size: 843 Bytes

Versions: 2

Compression:

Stored size: 843 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?

          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

2 entries across 2 versions & 1 rubygems

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