class Rails::Rack::Tracer
Public Class Methods
disable(middlewares: Rails.configuration.middleware)
click to toggle source
# File lib/rails/rack/tracer.rb, line 15 def disable(middlewares: Rails.configuration.middleware) middlewares.delete(Rails::Rack::Tracer) if @owns_all_middlewares middlewares.delete(::Rack::Tracer) @owns_all_middlewares = false end rescue end
instrument(tracer: OpenTracing.global_tracer, middlewares: Rails.configuration.middleware)
click to toggle source
# File lib/rails/rack/tracer.rb, line 5 def instrument(tracer: OpenTracing.global_tracer, middlewares: Rails.configuration.middleware) return unless defined?(::Rack::Tracer) @owns_all_middlewares = false unless middlewares.include?(::Rack::Tracer) middlewares.use(::Rack::Tracer, tracer: tracer) @owns_all_middlewares = true end middlewares.insert_after(::Rack::Tracer, Rails::Rack::Tracer) end
new(app)
click to toggle source
# File lib/rails/rack/tracer.rb, line 25 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rails/rack/tracer.rb, line 29 def call(env) @app.call(env) ensure enhance_rack_span(env) end
Private Instance Methods
enhance_rack_span(env)
click to toggle source
# File lib/rails/rack/tracer.rb, line 37 def enhance_rack_span(env) span = extract_span(env) if span && route_found?(env) span.operation_name = operation_name(env) end end
extract_span(env)
click to toggle source
# File lib/rails/rack/tracer.rb, line 44 def extract_span(env) env['rack.span'] end
operation_name(env)
click to toggle source
# File lib/rails/rack/tracer.rb, line 52 def operation_name(env) path_parameters = env["action_dispatch.request.path_parameters"] action_controller = env["action_controller.instance"] controller = action_controller ? action_controller.class.to_s : path_parameters[:controller] action = path_parameters[:action] "#{controller}##{action}" end
route_found?(env)
click to toggle source
# File lib/rails/rack/tracer.rb, line 48 def route_found?(env) env["action_dispatch.request.path_parameters"] end