Module: OneApm::Agent::Instrumentation::Rack

Includes:
TransactionBase
Defined in:
lib/one_apm/inst/rack/rack.rb

Constant Summary

Constants included from TransactionBase

TransactionBase::OA_DEFAULT_OPTIONS, TransactionBase::OA_DO_NOT_TRACE_KEY, TransactionBase::OA_IGNORE_APDEX_KEY, TransactionBase::OA_IGNORE_ENDUSER_KEY

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TransactionBase

#perform_action_with_oneapm_trace

Class Method Details

.extended(middleware) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/one_apm/inst/rack/rack.rb', line 28

def self.extended middleware
  middleware.class_eval do
    class << self
      alias call_without_oneapm call
      alias call call_with_oneapm
    end
  end
end

.included(middleware) ⇒ Object



21
22
23
24
25
26
# File 'lib/one_apm/inst/rack/rack.rb', line 21

def self.included middleware
  middleware.class_eval do
    alias call_without_oneapm call
    alias call call_with_oneapm
  end
end

Instance Method Details

#_oa_has_middleware_tracingObject



37
38
39
# File 'lib/one_apm/inst/rack/rack.rb', line 37

def _oa_has_middleware_tracing
  true
end

#call_with_oneapm(*args) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/one_apm/inst/rack/rack.rb', line 11

def call_with_oneapm(*args)
  @oneapm_request = ::Rack::Request.new(args.first)
  perform_action_with_oneapm_trace(:category => :middleware, :request => @oneapm_request) do
    result = call_without_oneapm(*args)
    # Ignore cascaded calls
    Transaction.abort_transaction! if result.first == 404
    result
  end
end

#oneapm_request_headers(_) ⇒ Object



7
8
9
# File 'lib/one_apm/inst/rack/rack.rb', line 7

def oneapm_request_headers(_)
  @oneapm_request.env
end