Class: Bugsnag::Middleware::RackRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/bugsnag/middleware/rack_request.rb

Instance Method Summary collapse

Constructor Details

#initialize(bugsnag) ⇒ RackRequest

Returns a new instance of RackRequest.



3
4
5
# File 'lib/bugsnag/middleware/rack_request.rb', line 3

def initialize(bugsnag)
  @bugsnag = bugsnag
end

Instance Method Details

#call(notification) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/bugsnag/middleware/rack_request.rb', line 7

def call(notification)
  if notification.request_data[:rack_env]
    env = notification.request_data[:rack_env]

    request = ::Rack::Request.new(env)
    params = request.params
    session = env["rack.session"]

    # Set the context
    notification.context = "#{request.request_method} #{request.path}"

    # Set a sensible default for user_id
    notification.user_id = request.ip

    # Build the clean url (hide the port if it is obvious)
    url = "#{request.scheme}://#{request.host}"
    url << ":#{request.port}" unless [80, 443].include?(request.port)
    url << Bugsnag::Helpers.cleanup_url(request.fullpath, notification.configuration.params_filters)

    # Add a request tab
    notification.add_tab(:request, {
      :url => url,
      :httpMethod => request.request_method,
      :params => params.to_hash,
      :userAgent => request.user_agent,
      :referer => request.referer,
      :clientIp => request.ip
    })
      
    # Add an environment tab
    notification.add_tab(:environment, env)

    # Add a session tab
    notification.add_tab(:session, session) if session

    # Add a cookies tab
    cookies = request.cookies
    notification.add_tab(:cookies, cookies) if cookies
  end

  @bugsnag.call(notification)
end