class Atatus::Middleware
@api private
Public Class Methods
new(app)
click to toggle source
# File lib/atatus/middleware.rb, line 26 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/atatus/middleware.rb, line 30 def call(env) begin if running? && !path_ignored?(env) transaction = start_transaction(env) end resp = @app.call env rescue InternalError raise # Don't report Atatus errors rescue ::Exception => e context = Atatus.build_context(rack_env: env, for_type: :error) Atatus.report(e, context: context, handled: false) raise ensure if resp && transaction status, headers, _body = resp transaction.add_response(status, headers: headers.dup) end Atatus.end_transaction http_result(status) end resp end
Private Instance Methods
config()
click to toggle source
# File lib/atatus/middleware.rb, line 92 def config @config ||= Atatus.agent.config end
http_result(status)
click to toggle source
# File lib/atatus/middleware.rb, line 57 def http_result(status) status && "HTTP #{status.to_s[0]}xx" end
path_ignored?(env)
click to toggle source
# File lib/atatus/middleware.rb, line 61 def path_ignored?(env) return true if config.ignore_url_patterns.any? do |r| r.match(env['PATH_INFO']) end return true if config.transaction_ignore_urls.any? do |r| r.match(env['PATH_INFO']) end false end
running?()
click to toggle source
# File lib/atatus/middleware.rb, line 88 def running? Atatus.running? end
start_transaction(env)
click to toggle source
# File lib/atatus/middleware.rb, line 73 def start_transaction(env) context = Atatus.build_context(rack_env: env, for_type: :transaction) Atatus.start_transaction 'Rack', 'request', context: context, trace_context: trace_context(env) end
trace_context(env)
click to toggle source
# File lib/atatus/middleware.rb, line 81 def trace_context(env) TraceContext.parse(env: env) rescue TraceContext::InvalidTraceparentHeader => e warn e.message nil end