Class: Rails::Rack::Tracer

Inherits:
Object
  • Object
show all
Defined in:
lib/rails/rack/tracer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Tracer

Returns a new instance of Tracer.



25
26
27
# File 'lib/rails/rack/tracer.rb', line 25

def initialize(app)
  @app = app
end

Class Method Details

.disable(middlewares: Rails.configuration.middleware) ⇒ Object



15
16
17
18
19
20
21
22
# 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) ⇒ Object



5
6
7
8
9
10
11
12
13
# 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

Instance Method Details

#call(env) ⇒ Object



29
30
31
32
33
# File 'lib/rails/rack/tracer.rb', line 29

def call(env)
  @app.call(env)
ensure
  enhance_rack_span(env)
end