Sha256: 2faa5d0594e20ccfea0225d59171ffbca88a3b35094aa56280bc4b406cf26632
Contents?: true
Size: 1.95 KB
Versions: 1
Compression:
Stored size: 1.95 KB
Contents
# Copyright (c) 2012 by Tracelytics, Inc. # All rights reserved. module Oboe class Rack attr_reader :app def initialize(app) @app = app end def call(env) report_kvs = {} xtrace = nil begin xtrace = env['HTTP_X_TRACE'] if env.is_a?(Hash) req = ::Rack::Request.new(env) report_kvs[:SampleRate] = Oboe::Config[:sample_rate] report_kvs[:SampleSource] = Oboe::Config[:sample_source] report_kvs['HTTP-Host'] = req.host report_kvs['Port'] = req.port report_kvs['Proto'] = req.scheme report_kvs['Query-String'] = req.query_string unless req.query_string.blank? report_kvs[:URL] = req.path report_kvs[:Method] = req.request_method report_kvs['AJAX'] = true if req.xhr? report_kvs['ClientIP'] = req.ip report_kvs['TV-Meta'] = env['HTTP_X_TV_META'] if env.has_key?('HTTP_X_TV_META') report_kvs['Forwarded-For'] = env['HTTP_X_FORWARDED_FOR'] if env.has_key?('HTTP_X_FORWARDED_FOR') report_kvs['Forwarded-Host'] = env['HTTP_X_FORWARDED_HOST'] if env.has_key?('HTTP_X_FORWARDED_HOST') report_kvs['Forwarded-Proto'] = env['HTTP_X_FORWARDED_PROTO'] if env.has_key?('HTTP_X_FORWARDED_PROTO') report_kvs['Forwarded-Port'] = env['HTTP_X_FORWARDED_PORT'] if env.has_key?('HTTP_X_FORWARDED_PORT') rescue # Discard any potential exceptions. Report whatever we can. end result, xtrace = Oboe::API.start_trace('rack', xtrace, report_kvs) do status, headers, response = @app.call(env) Oboe::API.log(nil, 'info', { :Status => status }) [status, headers, response] end rescue Exception => e xtrace = e.instance_variable_get(:@xtrace) raise ensure result[1]['X-Trace'] = xtrace if xtrace return result end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
oboe-2.2.5 | lib/oboe/inst/rack.rb |