airbrake 9.5.1 → 9.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5e8ae1c646cf9107329a7413bd0654873c55b47a84a51c7c25d6c7655768c1fd
|
|
4
|
+
data.tar.gz: 516194657a9ceca56fd9843f39d4293a74ccee6db11f6ad084519924eb911b46
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 75c112cdf4780dedae3ee51e1d83637f16c2cc1c76fb2cbc077ffa64ebb8dde3aeed4cb589ce3056975fda8f28e36f0dc4e7d212f554a0d413c4d0751bffe02a
|
|
7
|
+
data.tar.gz: 18e7c15a1630ff39730cb1b8c36f21ea333b2b12f202bbb75e0b82e4c3a4676df1c7b2fc4e8c779559c588b34ce8fc2338ef6992c487274e3254a72b47f09464
|
|
@@ -14,7 +14,7 @@ module Airbrake
|
|
|
14
14
|
|
|
15
15
|
notice[:context][:route] =
|
|
16
16
|
if action_dispatch_request?(request)
|
|
17
|
-
|
|
17
|
+
rails_route(request)
|
|
18
18
|
elsif sinatra_request?(request)
|
|
19
19
|
sinatra_route(request)
|
|
20
20
|
end
|
|
@@ -22,6 +22,11 @@ module Airbrake
|
|
|
22
22
|
|
|
23
23
|
private
|
|
24
24
|
|
|
25
|
+
def rails_route(request)
|
|
26
|
+
return unless (route = Airbrake::Rails::App.recognize_route(request))
|
|
27
|
+
route.path.spec.to_s
|
|
28
|
+
end
|
|
29
|
+
|
|
25
30
|
def sinatra_route(request)
|
|
26
31
|
return unless (route = request.env['sinatra.route'])
|
|
27
32
|
route.split(' ').drop(1).join(' ')
|
|
@@ -3,21 +3,11 @@ require 'airbrake/rails/app'
|
|
|
3
3
|
|
|
4
4
|
module Airbrake
|
|
5
5
|
module Rails
|
|
6
|
-
# @return [String]
|
|
7
|
-
CONTROLLER_KEY = 'controller'.freeze
|
|
8
|
-
|
|
9
|
-
# @return [String]
|
|
10
|
-
ACTION_KEY = 'action'.freeze
|
|
11
|
-
|
|
12
6
|
# ActionControllerRouteSubscriber sends route stat information, including
|
|
13
7
|
# performance data.
|
|
14
8
|
#
|
|
15
9
|
# @since v8.0.0
|
|
16
10
|
class ActionControllerRouteSubscriber
|
|
17
|
-
def initialize
|
|
18
|
-
@app = Airbrake::Rails::App.new
|
|
19
|
-
end
|
|
20
|
-
|
|
21
11
|
def call(*args)
|
|
22
12
|
# We don't track routeless events.
|
|
23
13
|
return unless (routes = Airbrake::Rack::RequestStore[:routes])
|
|
@@ -28,12 +18,20 @@ module Airbrake
|
|
|
28
18
|
)
|
|
29
19
|
return unless route
|
|
30
20
|
|
|
31
|
-
routes[route] = {
|
|
21
|
+
routes[find_route_name(route)] = {
|
|
32
22
|
method: event.method,
|
|
33
23
|
response_type: event.response_type,
|
|
34
24
|
groups: {}
|
|
35
25
|
}
|
|
36
26
|
end
|
|
27
|
+
|
|
28
|
+
def find_route_name(route)
|
|
29
|
+
if route.app.respond_to?(:app) && route.app.app.respond_to?(:engine_name)
|
|
30
|
+
"#{route.app.app.engine_name}##{route.path.spec}"
|
|
31
|
+
else
|
|
32
|
+
route.path.spec.to_s
|
|
33
|
+
end
|
|
34
|
+
end
|
|
37
35
|
end
|
|
38
36
|
end
|
|
39
37
|
end
|
data/lib/airbrake/rails/app.rb
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
module Airbrake
|
|
2
2
|
module Rails
|
|
3
|
-
# App is a wrapper around Rails.application
|
|
3
|
+
# App is a wrapper around Rails.application.
|
|
4
4
|
#
|
|
5
5
|
# @since v9.0.3
|
|
6
6
|
# @api private
|
|
7
7
|
class App
|
|
8
|
-
Route = Struct.new(:path, :controller, :action)
|
|
9
|
-
|
|
10
8
|
def self.recognize_route(request)
|
|
11
|
-
::Rails.application.routes.router.recognize(request) do |route,
|
|
9
|
+
::Rails.application.routes.router.recognize(request) do |route, _params|
|
|
12
10
|
# Rails can recognize multiple routes for the given request. For
|
|
13
11
|
# example, if we visit /users/2/edit, then Rails sees these routes:
|
|
14
12
|
# * "/users/:id/edit(.:format)"
|
|
@@ -16,41 +14,9 @@ module Airbrake
|
|
|
16
14
|
#
|
|
17
15
|
# We return the first route as, what it seems, the most optimal
|
|
18
16
|
# approach.
|
|
19
|
-
return route
|
|
17
|
+
return route
|
|
20
18
|
end
|
|
21
19
|
end
|
|
22
|
-
|
|
23
|
-
def routes
|
|
24
|
-
@routes ||= app_routes.merge(engine_routes).flat_map do |(engine_name, routes)|
|
|
25
|
-
routes.map { |rails_route| build_route(engine_name, rails_route) }
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
def app_routes
|
|
32
|
-
# Engine name is nil because this is default (non-engine) routes.
|
|
33
|
-
{ nil => ::Rails.application.routes.routes.routes }
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def engine_routes
|
|
37
|
-
::Rails::Engine.subclasses.flat_map.with_object({}) do |engine, hash|
|
|
38
|
-
next if (eng_routes = engine.routes.routes.routes).none?
|
|
39
|
-
|
|
40
|
-
hash[engine.engine_name] = eng_routes
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def build_route(engine_name, rails_route)
|
|
45
|
-
engine_prefix = engine_name
|
|
46
|
-
engine_prefix += '#' if engine_prefix
|
|
47
|
-
|
|
48
|
-
Route.new(
|
|
49
|
-
"#{engine_prefix}#{rails_route.path.spec}",
|
|
50
|
-
rails_route.defaults[:controller],
|
|
51
|
-
rails_route.defaults[:action]
|
|
52
|
-
)
|
|
53
|
-
end
|
|
54
20
|
end
|
|
55
21
|
end
|
|
56
22
|
end
|
data/lib/airbrake/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: airbrake
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 9.5.
|
|
4
|
+
version: 9.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Airbrake Technologies, Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-11-
|
|
11
|
+
date: 2019-11-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: airbrake-ruby
|