module ScoutApm::Rack

Public Class Methods

install!() click to toggle source
# File lib/scout_apm/rack.rb, line 3
def self.install!
  ScoutApm::Agent.instance.start(:skip_app_server_check => true)
  ScoutApm::Agent.instance.start_background_worker
end
transaction(endpoint_name, env) { || ... } click to toggle source
# File lib/scout_apm/rack.rb, line 8
def self.transaction(endpoint_name, env)
  req = ScoutApm::RequestManager.lookup
  req.annotate_request(:uri => env["REQUEST_PATH"]) rescue nil
  req.context.add_user(:ip => env["REMOTE_ADDR"]) rescue nil

  layer = ScoutApm::Layer.new('Controller', endpoint_name)
  req.start_layer(layer)

  begin
    yield
  rescue
    req.error!
    raise
  ensure
    req.stop_layer
  end
end