Module: ScoutApm::Instruments::ActionControllerRails3Rails4Instruments

Defined in:
lib/scout_apm/instruments/action_controller_rails_3_rails4.rb

Instance Method Summary collapse

Instance Method Details

#process_action(*args) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/scout_apm/instruments/action_controller_rails_3_rails4.rb', line 60

def process_action(*args)
  req = ScoutApm::RequestManager.lookup
  req.annotate_request(:uri => scout_transaction_uri(request))

  # IP Spoofing Protection can throw an exception, just move on w/o remote ip
  req.context.add_user(:ip => request.remote_ip) rescue nil

  req.set_headers(request.headers)

  # Check if this this request is to be reported instantly
  if instant_key = request.cookies['scoutapminstant']
    Agent.instance.logger.info "Instant trace request with key=#{instant_key} for path=#{path}"
    req.instant_key = instant_key
  end

  req.web!

  req.start_layer( ScoutApm::Layer.new("Controller", "#{controller_path}/#{action_name}") )
  begin
    super
  rescue
    req.error!
    raise
  ensure
    req.stop_layer
  end
end

#scout_transaction_uri(request) ⇒ Object

Given an ActionDispatch::Request, formats the uri based on config settings.



89
90
91
92
93
94
95
96
# File 'lib/scout_apm/instruments/action_controller_rails_3_rails4.rb', line 89

def scout_transaction_uri(request)
  case ScoutApm::Agent.instance.config.value("uri_reporting")
  when 'path'
    request.path # strips off the query string for more security
  else # default handles filtered params
    request.filtered_path
  end
end