airbrake 12.0.0 → 13.0.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 +4 -4
- data/lib/airbrake/capistrano/capistrano2.rb +1 -1
- data/lib/airbrake/rails/app.rb +5 -5
- data/lib/airbrake/rails/event.rb +13 -1
- data/lib/airbrake/rails/railtie.rb +6 -103
- data/lib/airbrake/rails/railties/action_controller_tie.rb +90 -0
- data/lib/airbrake/rails/railties/active_record_tie.rb +74 -0
- data/lib/airbrake/rails/railties/middleware_tie.rb +62 -0
- data/lib/airbrake/rake/tasks.rb +7 -7
- data/lib/airbrake/version.rb +1 -1
- metadata +15 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 553d46f184e67e783a37345e049d4f7bb429520d27d732d2b732ab42ea4a5314
|
4
|
+
data.tar.gz: e162a0342478e68ec608faf5c3c8d033dd9c41a0956da1a08d26a040281fff2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0452b7f7d9acb6af56babd7b44cf3bc741de12d218c3d07e25be4de67ab3576ab8ba88a30a620abe9a3b419a9d24d86428583ddcb3858a2755f5b20ad0020b89
|
7
|
+
data.tar.gz: fba302f11402c2c066d2d909b5c5cb2988f4071940fdb4a32e32e30f4b62fce4b683f322c72736fff0e24df64af603953ec32b9ed01941be658ca322ab6ee499
|
@@ -21,7 +21,7 @@ module Airbrake
|
|
21
21
|
RAILS_ENV=#{fetch(:rails_env, nil)} \
|
22
22
|
|
23
23
|
bundle exec rake airbrake:deploy \
|
24
|
-
USERNAME=#{Shellwords.shellescape(ENV
|
24
|
+
USERNAME=#{Shellwords.shellescape(ENV.fetch('USER', nil) || ENV.fetch('USERNAME', nil))} \
|
25
25
|
ENVIRONMENT=#{fetch(:airbrake_env, fetch(:rails_env, 'production'))} \
|
26
26
|
REVISION=#{current_revision.strip} \
|
27
27
|
REPOSITORY=#{repository} \
|
data/lib/airbrake/rails/app.rb
CHANGED
@@ -40,12 +40,12 @@ module Airbrake
|
|
40
40
|
# Skip "catch-all" routes such as:
|
41
41
|
# get '*path => 'pages#about'
|
42
42
|
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
43
|
+
# Ideally, we should be using `route.glob?` but in Rails 7+ this
|
44
|
+
# call would fail with a `NoMethodError`. This is because in
|
45
|
+
# Rails 7+ the AST for the route is not kept in memory anymore.
|
46
46
|
#
|
47
|
-
# https://github.com/rails/rails/
|
48
|
-
next if route.
|
47
|
+
# See: https://github.com/rails/rails/pull/43006#discussion_r783895766
|
48
|
+
next if route.path.spec.any?(ActionDispatch::Journey::Nodes::Star)
|
49
49
|
|
50
50
|
path =
|
51
51
|
if engine == ::Rails.application
|
data/lib/airbrake/rails/event.rb
CHANGED
@@ -10,10 +10,14 @@ module Airbrake
|
|
10
10
|
# @see https://github.com/rails/rails/issues/8987
|
11
11
|
HTML_RESPONSE_WILDCARD = "*/*"
|
12
12
|
|
13
|
+
# @return [Integer]
|
14
|
+
MILLISECOND = 1000
|
15
|
+
|
13
16
|
include Airbrake::Loggable
|
14
17
|
|
15
18
|
def initialize(*args)
|
16
19
|
@event = ActiveSupport::Notifications::Event.new(*args)
|
20
|
+
@rails_7_or_greater = ::Rails::VERSION::MAJOR >= 7
|
17
21
|
end
|
18
22
|
|
19
23
|
def method
|
@@ -42,7 +46,15 @@ module Airbrake
|
|
42
46
|
end
|
43
47
|
|
44
48
|
def time
|
45
|
-
|
49
|
+
# On Rails 7+ `ActiveSupport::Notifications::Event#time` returns an
|
50
|
+
# instance of Float. It represents monotonic time in milliseconds.
|
51
|
+
# Airbrake Ruby expects that the provided time is in seconds. Hence,
|
52
|
+
# we need to convert it from milliseconds to seconds. In the
|
53
|
+
# versions below Rails 7, time is an instance of Time.
|
54
|
+
#
|
55
|
+
# Relevant commit:
|
56
|
+
# https://github.com/rails/rails/commit/81d0dc90becfe0b8e7f7f26beb66c25d84b8ec7f
|
57
|
+
@rails_7_or_greater ? @event.time / MILLISECOND : @event.time
|
46
58
|
end
|
47
59
|
|
48
60
|
def groups
|
@@ -5,37 +5,10 @@ module Airbrake
|
|
5
5
|
# This railtie works for any Rails application that supports railties (Rails
|
6
6
|
# 3.2+ apps). It makes Airbrake Ruby work with Rails and report errors
|
7
7
|
# occurring in the application automatically.
|
8
|
-
#
|
9
|
-
# rubocop:disable Metrics/BlockLength
|
10
8
|
class Railtie < ::Rails::Railtie
|
11
9
|
initializer('airbrake.middleware') do |app|
|
12
|
-
|
13
|
-
|
14
|
-
# case the request is local. We want to insert our middleware after
|
15
|
-
# DebugExceptions, so we don't notify Airbrake about local requests.
|
16
|
-
|
17
|
-
if ::Rails.version.to_i >= 5
|
18
|
-
# Avoid the warning about deprecated strings.
|
19
|
-
# Insert after DebugExceptions, since ConnectionManagement doesn't
|
20
|
-
# exist in Rails 5 anymore.
|
21
|
-
app.config.middleware.insert_after(
|
22
|
-
ActionDispatch::DebugExceptions,
|
23
|
-
Airbrake::Rack::Middleware,
|
24
|
-
)
|
25
|
-
elsif defined?(::ActiveRecord::ConnectionAdapters::ConnectionManagement)
|
26
|
-
# Insert after ConnectionManagement to avoid DB connection leakage:
|
27
|
-
# https://github.com/airbrake/airbrake/pull/568
|
28
|
-
app.config.middleware.insert_after(
|
29
|
-
::ActiveRecord::ConnectionAdapters::ConnectionManagement,
|
30
|
-
'Airbrake::Rack::Middleware',
|
31
|
-
)
|
32
|
-
else
|
33
|
-
# Insert after DebugExceptions for apps without ActiveRecord.
|
34
|
-
app.config.middleware.insert_after(
|
35
|
-
ActionDispatch::DebugExceptions,
|
36
|
-
'Airbrake::Rack::Middleware',
|
37
|
-
)
|
38
|
-
end
|
10
|
+
require 'airbrake/rails/railties/middleware_tie'
|
11
|
+
Railties::MiddlewareTie.new(app).call
|
39
12
|
end
|
40
13
|
|
41
14
|
rake_tasks do
|
@@ -47,82 +20,13 @@ module Airbrake
|
|
47
20
|
end
|
48
21
|
|
49
22
|
initializer('airbrake.action_controller') do
|
50
|
-
|
51
|
-
|
52
|
-
# interesting request data. Appends that information to notices.
|
53
|
-
require 'airbrake/rails/action_controller'
|
54
|
-
include Airbrake::Rails::ActionController
|
55
|
-
|
56
|
-
# Cache route information for the duration of the request.
|
57
|
-
require 'airbrake/rails/action_controller_route_subscriber'
|
58
|
-
ActiveSupport::Notifications.subscribe(
|
59
|
-
'start_processing.action_controller',
|
60
|
-
Airbrake::Rails::ActionControllerRouteSubscriber.new,
|
61
|
-
)
|
62
|
-
|
63
|
-
# Send route stats.
|
64
|
-
require 'airbrake/rails/action_controller_notify_subscriber'
|
65
|
-
ActiveSupport::Notifications.subscribe(
|
66
|
-
'process_action.action_controller',
|
67
|
-
Airbrake::Rails::ActionControllerNotifySubscriber.new,
|
68
|
-
)
|
69
|
-
|
70
|
-
# Send performance breakdown: where a request spends its time.
|
71
|
-
require 'airbrake/rails/action_controller_performance_breakdown_subscriber'
|
72
|
-
ActiveSupport::Notifications.subscribe(
|
73
|
-
'process_action.action_controller',
|
74
|
-
Airbrake::Rails::ActionControllerPerformanceBreakdownSubscriber.new,
|
75
|
-
)
|
76
|
-
|
77
|
-
require 'airbrake/rails/net_http' if defined?(Net) && defined?(Net::HTTP)
|
78
|
-
require 'airbrake/rails/curb' if defined?(Curl) && defined?(Curl::CURB_VERSION)
|
79
|
-
require 'airbrake/rails/http' if defined?(HTTP) && defined?(HTTP::Client)
|
80
|
-
require 'airbrake/rails/http_client' if defined?(HTTPClient)
|
81
|
-
require 'airbrake/rails/typhoeus' if defined?(Typhoeus)
|
82
|
-
|
83
|
-
if defined?(Excon)
|
84
|
-
require 'airbrake/rails/excon_subscriber'
|
85
|
-
ActiveSupport::Notifications.subscribe(/excon/, Airbrake::Rails::Excon.new)
|
86
|
-
::Excon.defaults[:instrumentor] = ActiveSupport::Notifications
|
87
|
-
end
|
88
|
-
end
|
23
|
+
require 'airbrake/rails/railties/action_controller_tie'
|
24
|
+
Railties::ActionControllerTie.new.call
|
89
25
|
end
|
90
26
|
|
91
27
|
initializer('airbrake.active_record') do
|
92
|
-
|
93
|
-
|
94
|
-
# Applicable only to the versions of Rails lower than 4.2.
|
95
|
-
if defined?(::Rails) &&
|
96
|
-
Gem::Version.new(::Rails.version) <= Gem::Version.new('4.2')
|
97
|
-
require 'airbrake/rails/active_record'
|
98
|
-
include Airbrake::Rails::ActiveRecord
|
99
|
-
end
|
100
|
-
|
101
|
-
if defined?(ActiveRecord)
|
102
|
-
# Send SQL queries.
|
103
|
-
require 'airbrake/rails/active_record_subscriber'
|
104
|
-
ActiveSupport::Notifications.subscribe(
|
105
|
-
'sql.active_record', Airbrake::Rails::ActiveRecordSubscriber.new
|
106
|
-
)
|
107
|
-
|
108
|
-
# Filter out parameters from SQL body.
|
109
|
-
if ::ActiveRecord::Base.respond_to?(:connection_db_config)
|
110
|
-
# Rails 6.1+ deprecates "connection_config" in favor of
|
111
|
-
# "connection_db_config", so we need an updated call.
|
112
|
-
Airbrake.add_performance_filter(
|
113
|
-
Airbrake::Filters::SqlFilter.new(
|
114
|
-
::ActiveRecord::Base.connection_db_config.configuration_hash[:adapter],
|
115
|
-
),
|
116
|
-
)
|
117
|
-
else
|
118
|
-
Airbrake.add_performance_filter(
|
119
|
-
Airbrake::Filters::SqlFilter.new(
|
120
|
-
::ActiveRecord::Base.connection_config[:adapter],
|
121
|
-
),
|
122
|
-
)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
28
|
+
require 'airbrake/rails/railties/active_record_tie'
|
29
|
+
Railties::ActiveRecordTie.new.call
|
126
30
|
end
|
127
31
|
|
128
32
|
initializer('airbrake.active_job') do
|
@@ -146,6 +50,5 @@ module Airbrake
|
|
146
50
|
end
|
147
51
|
end
|
148
52
|
end
|
149
|
-
# rubocop:enable Metrics/BlockLength
|
150
53
|
end
|
151
54
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'airbrake/rails/action_controller'
|
4
|
+
require 'airbrake/rails/action_controller_route_subscriber'
|
5
|
+
require 'airbrake/rails/action_controller_notify_subscriber'
|
6
|
+
require 'airbrake/rails/action_controller_performance_breakdown_subscriber'
|
7
|
+
|
8
|
+
module Airbrake
|
9
|
+
module Rails
|
10
|
+
module Railties
|
11
|
+
# Ties Airbrake APM (routes) and HTTP clients with Rails.
|
12
|
+
#
|
13
|
+
# @api private
|
14
|
+
# @since v13.0.1
|
15
|
+
class ActionControllerTie
|
16
|
+
def initialize
|
17
|
+
@route_subscriber = Airbrake::Rails::ActionControllerRouteSubscriber.new
|
18
|
+
@notify_subscriber = Airbrake::Rails::ActionControllerNotifySubscriber.new
|
19
|
+
@performance_breakdown_subscriber =
|
20
|
+
Airbrake::Rails::ActionControllerPerformanceBreakdownSubscriber.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def call
|
24
|
+
ActiveSupport.on_load(:action_controller, run_once: true, yield: self) do
|
25
|
+
# Patches ActionController with methods that allow us to retrieve
|
26
|
+
# interesting request data. Appends that information to notices.
|
27
|
+
::ActionController::Base.include(Airbrake::Rails::ActionController)
|
28
|
+
|
29
|
+
tie_routes_apm
|
30
|
+
tie_http_integrations
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def tie_routes_apm
|
37
|
+
[
|
38
|
+
# Cache route information for the duration of the request.
|
39
|
+
['start_processing.action_controller', @route_subscriber],
|
40
|
+
|
41
|
+
# Send route stats.
|
42
|
+
['process_action.action_controller', @notify_subscriber],
|
43
|
+
|
44
|
+
# Send performance breakdown: where a request spends its time.
|
45
|
+
['process_action.action_controller', @performance_breakdown_subscriber],
|
46
|
+
].each do |(event, callback)|
|
47
|
+
ActiveSupport::Notifications.subscribe(event, callback)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def tie_http_integrations
|
52
|
+
tie_net_http
|
53
|
+
tie_curl
|
54
|
+
tie_http
|
55
|
+
tie_http_client
|
56
|
+
tie_typhoeus
|
57
|
+
tie_excon
|
58
|
+
end
|
59
|
+
|
60
|
+
def tie_net_http
|
61
|
+
require 'airbrake/rails/net_http' if defined?(Net) && defined?(Net::HTTP)
|
62
|
+
end
|
63
|
+
|
64
|
+
def tie_curl
|
65
|
+
require 'airbrake/rails/curb' if defined?(Curl) && defined?(Curl::CURB_VERSION)
|
66
|
+
end
|
67
|
+
|
68
|
+
def tie_http
|
69
|
+
require 'airbrake/rails/http' if defined?(HTTP) && defined?(HTTP::Client)
|
70
|
+
end
|
71
|
+
|
72
|
+
def tie_http_client
|
73
|
+
require 'airbrake/rails/http_client' if defined?(HTTPClient)
|
74
|
+
end
|
75
|
+
|
76
|
+
def tie_typhoeus
|
77
|
+
require 'airbrake/rails/typhoeus' if defined?(Typhoeus)
|
78
|
+
end
|
79
|
+
|
80
|
+
def tie_excon
|
81
|
+
return unless defined?(Excon)
|
82
|
+
|
83
|
+
require 'airbrake/rails/excon_subscriber'
|
84
|
+
ActiveSupport::Notifications.subscribe(/excon/, Airbrake::Rails::Excon.new)
|
85
|
+
::Excon.defaults[:instrumentor] = ActiveSupport::Notifications
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'airbrake/rails/active_record'
|
4
|
+
require 'airbrake/rails/active_record_subscriber'
|
5
|
+
|
6
|
+
module Airbrake
|
7
|
+
module Rails
|
8
|
+
module Railties
|
9
|
+
# Ties Airbrake APM (queries) with Rails.
|
10
|
+
#
|
11
|
+
# @api private
|
12
|
+
# @since v13.0.1
|
13
|
+
class ActiveRecordTie
|
14
|
+
def initialize
|
15
|
+
@active_record_subscriber = Airbrake::Rails::ActiveRecordSubscriber.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def call
|
19
|
+
ActiveSupport.on_load(:active_record, run_once: true, yield: self) do
|
20
|
+
tie_activerecord_callback_fix
|
21
|
+
tie_activerecord_apm
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def tie_activerecord_callback_fix
|
28
|
+
# Reports exceptions occurring in some bugged ActiveRecord callbacks.
|
29
|
+
# Applicable only to the versions of Rails lower than 4.2.
|
30
|
+
return unless defined?(::Rails)
|
31
|
+
return if Gem::Version.new(::Rails.version) > Gem::Version.new('4.2')
|
32
|
+
|
33
|
+
ActiveRecord::Base.include(Airbrake::Rails::ActiveRecord)
|
34
|
+
end
|
35
|
+
|
36
|
+
def tie_activerecord_apm
|
37
|
+
# Some Rails apps don't use ActiveRecord.
|
38
|
+
return unless defined?(::ActiveRecord)
|
39
|
+
|
40
|
+
# However, some dependencies might still require it, so we need an
|
41
|
+
# extra check. Apps that don't need ActiveRecord will likely have no
|
42
|
+
# AR configurations defined. We will skip APM integration in that
|
43
|
+
# case. See: https://github.com/airbrake/airbrake/issues/1222
|
44
|
+
configurations = ::ActiveRecord::Base.configurations
|
45
|
+
return unless configurations.any?
|
46
|
+
|
47
|
+
# Send SQL queries.
|
48
|
+
ActiveSupport::Notifications.subscribe(
|
49
|
+
'sql.active_record',
|
50
|
+
@active_record_subscriber,
|
51
|
+
)
|
52
|
+
|
53
|
+
# Filter out parameters from SQL body.
|
54
|
+
sql_filter = Airbrake::Filters::SqlFilter.new(
|
55
|
+
detect_activerecord_adapter(configurations),
|
56
|
+
)
|
57
|
+
Airbrake.add_performance_filter(sql_filter)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Rails 6+ introduces the `configs_for` API instead of the deprecated
|
61
|
+
# `#[]`, so we need an updated call.
|
62
|
+
def detect_activerecord_adapter(configurations)
|
63
|
+
unless configurations.respond_to?(:configs_for)
|
64
|
+
return configurations[::Rails.env]['adapter']
|
65
|
+
end
|
66
|
+
|
67
|
+
cfg = configurations.configs_for(env_name: ::Rails.env).first
|
68
|
+
# Rails 7+ API : Rails 6 API.
|
69
|
+
cfg.respond_to?(:adapter) ? cfg.adapter : cfg.config['adapter']
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Airbrake
|
4
|
+
module Rails
|
5
|
+
module Railties
|
6
|
+
# Ties Airbrake Rails Middleware with Rails (error sending).
|
7
|
+
#
|
8
|
+
# Since Rails 3.2 the ActionDispatch::DebugExceptions middleware is
|
9
|
+
# responsible for logging exceptions and showing a debugging page in case
|
10
|
+
# the request is local. We want to insert our middleware after
|
11
|
+
# DebugExceptions, so we don't notify Airbrake about local requests.
|
12
|
+
#
|
13
|
+
# @api private
|
14
|
+
# @since v13.0.1
|
15
|
+
class MiddlewareTie
|
16
|
+
def initialize(app)
|
17
|
+
@app = app
|
18
|
+
@middleware = app.config.middleware
|
19
|
+
end
|
20
|
+
|
21
|
+
def call
|
22
|
+
return tie_rails_5_or_above if ::Rails.version.to_i >= 5
|
23
|
+
|
24
|
+
if defined?(::ActiveRecord::ConnectionAdapters::ConnectionManagement)
|
25
|
+
return tie_rails_4_or_below_with_active_record
|
26
|
+
end
|
27
|
+
|
28
|
+
tie_rails_4_or_below_with_active_record
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
# Avoid the warning about deprecated strings.
|
34
|
+
# Insert after DebugExceptions, since ConnectionManagement doesn't
|
35
|
+
# exist in Rails 5 anymore.
|
36
|
+
def tie_rails_5_or_above
|
37
|
+
@middleware.insert_after(
|
38
|
+
ActionDispatch::DebugExceptions,
|
39
|
+
Airbrake::Rack::Middleware,
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Insert after ConnectionManagement to avoid DB connection leakage:
|
44
|
+
# https://github.com/airbrake/airbrake/pull/568
|
45
|
+
def tie_rails_4_or_below_with_active_record
|
46
|
+
@middleware.insert_after(
|
47
|
+
::ActiveRecord::ConnectionAdapters::ConnectionManagement,
|
48
|
+
'Airbrake::Rack::Middleware',
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Insert after DebugExceptions for apps without ActiveRecord.
|
53
|
+
def tie_rails_4_or_below_without_active_record
|
54
|
+
@middleware.insert_after(
|
55
|
+
ActionDispatch::DebugExceptions,
|
56
|
+
'Airbrake::Rack::Middleware',
|
57
|
+
)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/airbrake/rake/tasks.rb
CHANGED
@@ -53,11 +53,11 @@ namespace :airbrake do
|
|
53
53
|
raise Airbrake::Error, 'airbrake-ruby is not configured' unless Airbrake.configured?
|
54
54
|
|
55
55
|
deploy_params = {
|
56
|
-
environment: ENV
|
57
|
-
username: ENV
|
58
|
-
revision: ENV
|
59
|
-
repository: ENV
|
60
|
-
version: ENV
|
56
|
+
environment: ENV.fetch('ENVIRONMENT', nil),
|
57
|
+
username: ENV.fetch('USERNAME', nil),
|
58
|
+
revision: ENV.fetch('REVISION', nil),
|
59
|
+
repository: ENV.fetch('REPOSITORY', nil),
|
60
|
+
version: ENV.fetch('VERSION', nil),
|
61
61
|
}
|
62
62
|
promise = Airbrake.notify_deploy(deploy_params)
|
63
63
|
promise.then do
|
@@ -68,7 +68,7 @@ namespace :airbrake do
|
|
68
68
|
|
69
69
|
desc 'Install a Heroku deploy hook to notify Airbrake of deploys'
|
70
70
|
task :install_heroku_deploy_hook do
|
71
|
-
app = ENV
|
71
|
+
app = ENV.fetch('HEROKU_APP', nil)
|
72
72
|
|
73
73
|
config = Bundler.with_clean_env do
|
74
74
|
`heroku config --shell#{" --app #{app}" if app}`
|
@@ -89,7 +89,7 @@ namespace :airbrake do
|
|
89
89
|
" environment will be used."
|
90
90
|
end
|
91
91
|
|
92
|
-
unless (repo = ENV
|
92
|
+
unless (repo = ENV.fetch('REPOSITORY_URL', nil))
|
93
93
|
repo = `git remote get-url origin 2>/dev/null`.chomp
|
94
94
|
if repo.empty?
|
95
95
|
puts "Airbrake couldn't identify your app's repository."
|
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:
|
4
|
+
version: 13.0.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:
|
11
|
+
date: 2022-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: airbrake-ruby
|
@@ -154,16 +154,16 @@ dependencies:
|
|
154
154
|
name: redis
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 4.
|
159
|
+
version: '4.5'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 4.
|
166
|
+
version: '4.5'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: sidekiq
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: '0
|
187
|
+
version: '1.0'
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '0
|
194
|
+
version: '1.0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: excon
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -335,6 +335,9 @@ files:
|
|
335
335
|
- lib/airbrake/rails/http_client.rb
|
336
336
|
- lib/airbrake/rails/net_http.rb
|
337
337
|
- lib/airbrake/rails/railtie.rb
|
338
|
+
- lib/airbrake/rails/railties/action_controller_tie.rb
|
339
|
+
- lib/airbrake/rails/railties/active_record_tie.rb
|
340
|
+
- lib/airbrake/rails/railties/middleware_tie.rb
|
338
341
|
- lib/airbrake/rails/typhoeus.rb
|
339
342
|
- lib/airbrake/rake.rb
|
340
343
|
- lib/airbrake/rake/tasks.rb
|
@@ -349,7 +352,8 @@ files:
|
|
349
352
|
homepage: https://airbrake.io
|
350
353
|
licenses:
|
351
354
|
- MIT
|
352
|
-
metadata:
|
355
|
+
metadata:
|
356
|
+
rubygems_mfa_required: 'true'
|
353
357
|
post_install_message:
|
354
358
|
rdoc_options: []
|
355
359
|
require_paths:
|
@@ -358,14 +362,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
358
362
|
requirements:
|
359
363
|
- - ">="
|
360
364
|
- !ruby/object:Gem::Version
|
361
|
-
version: '2.
|
365
|
+
version: '2.6'
|
362
366
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
363
367
|
requirements:
|
364
368
|
- - ">="
|
365
369
|
- !ruby/object:Gem::Version
|
366
370
|
version: '0'
|
367
371
|
requirements: []
|
368
|
-
rubygems_version: 3.
|
372
|
+
rubygems_version: 3.3.3
|
369
373
|
signing_key:
|
370
374
|
specification_version: 4
|
371
375
|
summary: Airbrake is an online tool that provides robust exception tracking in any
|