bugsnag 6.19.0 → 6.23.0
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/CHANGELOG.md +99 -0
- data/VERSION +1 -1
- data/lib/bugsnag/breadcrumb_type.rb +14 -0
- data/lib/bugsnag/breadcrumbs/breadcrumb.rb +34 -1
- data/lib/bugsnag/breadcrumbs/breadcrumbs.rb +1 -0
- data/lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb +50 -0
- data/lib/bugsnag/configuration.rb +118 -8
- data/lib/bugsnag/delivery/synchronous.rb +2 -2
- data/lib/bugsnag/delivery/thread_queue.rb +2 -2
- data/lib/bugsnag/error.rb +25 -0
- data/lib/bugsnag/event.rb +7 -0
- data/lib/bugsnag/integrations/mongo.rb +5 -3
- data/lib/bugsnag/integrations/rack.rb +3 -3
- data/lib/bugsnag/integrations/rails/active_job.rb +102 -0
- data/lib/bugsnag/integrations/rails/rails_breadcrumbs.rb +2 -0
- data/lib/bugsnag/integrations/railtie.rb +43 -25
- data/lib/bugsnag/integrations/resque.rb +13 -3
- data/lib/bugsnag/middleware/active_job.rb +18 -0
- data/lib/bugsnag/middleware/classify_error.rb +1 -0
- data/lib/bugsnag/middleware/delayed_job.rb +21 -2
- data/lib/bugsnag/middleware/exception_meta_data.rb +2 -0
- data/lib/bugsnag/middleware/rack_request.rb +2 -2
- data/lib/bugsnag/middleware/rails3_request.rb +2 -2
- data/lib/bugsnag/middleware/rake.rb +1 -1
- data/lib/bugsnag/middleware/sidekiq.rb +1 -1
- data/lib/bugsnag/middleware_stack.rb +6 -6
- data/lib/bugsnag/report.rb +129 -5
- data/lib/bugsnag/session_tracker.rb +3 -7
- data/lib/bugsnag/tasks/bugsnag.rake +1 -1
- data/lib/bugsnag/utility/metadata_delegate.rb +102 -0
- data/lib/bugsnag.rb +61 -5
- metadata +10 -3
data/lib/bugsnag.rb
CHANGED
@@ -5,6 +5,7 @@ require "bugsnag/version"
|
|
5
5
|
require "bugsnag/configuration"
|
6
6
|
require "bugsnag/meta_data"
|
7
7
|
require "bugsnag/report"
|
8
|
+
require "bugsnag/event"
|
8
9
|
require "bugsnag/cleaner"
|
9
10
|
require "bugsnag/helpers"
|
10
11
|
require "bugsnag/session_tracker"
|
@@ -28,10 +29,13 @@ require "bugsnag/middleware/rake"
|
|
28
29
|
require "bugsnag/middleware/classify_error"
|
29
30
|
require "bugsnag/middleware/delayed_job"
|
30
31
|
|
32
|
+
require "bugsnag/breadcrumb_type"
|
31
33
|
require "bugsnag/breadcrumbs/validator"
|
32
34
|
require "bugsnag/breadcrumbs/breadcrumb"
|
33
35
|
require "bugsnag/breadcrumbs/breadcrumbs"
|
34
36
|
|
37
|
+
require "bugsnag/utility/metadata_delegate"
|
38
|
+
|
35
39
|
# rubocop:todo Metrics/ModuleLength
|
36
40
|
module Bugsnag
|
37
41
|
LOCK = Mutex.new
|
@@ -79,7 +83,12 @@ module Bugsnag
|
|
79
83
|
report = Report.new(exception, configuration, auto_notify)
|
80
84
|
|
81
85
|
# If this is an auto_notify we yield the block before the any middleware is run
|
82
|
-
|
86
|
+
begin
|
87
|
+
yield(report) if block_given? && auto_notify
|
88
|
+
rescue StandardError => e
|
89
|
+
configuration.warn("Error in internal notify block: #{e}")
|
90
|
+
configuration.warn("Error in internal notify block stacktrace: #{e.backtrace.inspect}")
|
91
|
+
end
|
83
92
|
|
84
93
|
if report.ignore?
|
85
94
|
configuration.debug("Not notifying #{report.exceptions.last[:errorClass]} due to ignore being signified in auto_notify block")
|
@@ -106,7 +115,12 @@ module Bugsnag
|
|
106
115
|
|
107
116
|
# If this is not an auto_notify then the block was provided by the user. This should be the last
|
108
117
|
# block that is run as it is the users "most specific" block.
|
109
|
-
|
118
|
+
begin
|
119
|
+
yield(report) if block_given? && !auto_notify
|
120
|
+
rescue StandardError => e
|
121
|
+
configuration.warn("Error in notify block: #{e}")
|
122
|
+
configuration.warn("Error in notify block stacktrace: #{e.backtrace.inspect}")
|
123
|
+
end
|
110
124
|
|
111
125
|
if report.ignore?
|
112
126
|
configuration.debug("Not notifying #{report.exceptions.last[:errorClass]} due to ignore being signified in user provided block")
|
@@ -227,7 +241,7 @@ module Bugsnag
|
|
227
241
|
#
|
228
242
|
# @param name [String] the main breadcrumb name/message
|
229
243
|
# @param meta_data [Hash] String, Numeric, or Boolean meta data to attach
|
230
|
-
# @param type [String] the breadcrumb type,
|
244
|
+
# @param type [String] the breadcrumb type, see {Bugsnag::BreadcrumbType}
|
231
245
|
# @param auto [Symbol] set to :auto if the breadcrumb is automatically created
|
232
246
|
# @return [void]
|
233
247
|
def leave_breadcrumb(name, meta_data={}, type=Bugsnag::Breadcrumbs::MANUAL_BREADCRUMB_TYPE, auto=:manual)
|
@@ -240,7 +254,7 @@ module Bugsnag
|
|
240
254
|
# Skip if it's already invalid
|
241
255
|
return if breadcrumb.ignore?
|
242
256
|
|
243
|
-
# Run
|
257
|
+
# Run before_breadcrumb_callbacks
|
244
258
|
configuration.before_breadcrumb_callbacks.each do |c|
|
245
259
|
c.arity > 0 ? c.call(breadcrumb) : c.call
|
246
260
|
break if breadcrumb.ignore?
|
@@ -249,6 +263,10 @@ module Bugsnag
|
|
249
263
|
# Return early if ignored
|
250
264
|
return if breadcrumb.ignore?
|
251
265
|
|
266
|
+
# Run on_breadcrumb callbacks
|
267
|
+
configuration.on_breadcrumb_callbacks.call(breadcrumb)
|
268
|
+
return if breadcrumb.ignore?
|
269
|
+
|
252
270
|
# Validate again in case of callback alteration
|
253
271
|
validator.validate(breadcrumb)
|
254
272
|
|
@@ -265,7 +283,7 @@ module Bugsnag
|
|
265
283
|
# Returning false from an on_error callback will cause the error to be ignored
|
266
284
|
# and will prevent any remaining callbacks from being called
|
267
285
|
#
|
268
|
-
# @param callback [Proc]
|
286
|
+
# @param callback [Proc, Method, #call]
|
269
287
|
# @return [void]
|
270
288
|
def add_on_error(callback)
|
271
289
|
configuration.add_on_error(callback)
|
@@ -283,6 +301,44 @@ module Bugsnag
|
|
283
301
|
configuration.remove_on_error(callback)
|
284
302
|
end
|
285
303
|
|
304
|
+
##
|
305
|
+
# Add the given callback to the list of on_breadcrumb callbacks
|
306
|
+
#
|
307
|
+
# The on_breadcrumb callbacks will be called when a breadcrumb is left and
|
308
|
+
# are passed the {Breadcrumbs::Breadcrumb Breadcrumb} object
|
309
|
+
#
|
310
|
+
# Returning false from an on_breadcrumb callback will cause the breadcrumb
|
311
|
+
# to be ignored and will prevent any remaining callbacks from being called
|
312
|
+
#
|
313
|
+
# @param callback [Proc, Method, #call]
|
314
|
+
# @return [void]
|
315
|
+
def add_on_breadcrumb(callback)
|
316
|
+
configuration.add_on_breadcrumb(callback)
|
317
|
+
end
|
318
|
+
|
319
|
+
##
|
320
|
+
# Remove the given callback from the list of on_breadcrumb callbacks
|
321
|
+
#
|
322
|
+
# Note that this must be the same instance that was passed to
|
323
|
+
# {add_on_breadcrumb}, otherwise it will not be removed
|
324
|
+
#
|
325
|
+
# @param callback [Proc, Method, #call]
|
326
|
+
# @return [void]
|
327
|
+
def remove_on_breadcrumb(callback)
|
328
|
+
configuration.remove_on_breadcrumb(callback)
|
329
|
+
end
|
330
|
+
|
331
|
+
##
|
332
|
+
# Returns the current list of breadcrumbs
|
333
|
+
#
|
334
|
+
# This is a per-thread circular buffer, containing at most 'max_breadcrumbs'
|
335
|
+
# breadcrumbs
|
336
|
+
#
|
337
|
+
# @return [Bugsnag::Utility::CircularBuffer]
|
338
|
+
def breadcrumbs
|
339
|
+
configuration.breadcrumbs
|
340
|
+
end
|
341
|
+
|
286
342
|
##
|
287
343
|
# Returns the client's Cleaner object, or creates one if not yet created.
|
288
344
|
#
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -40,8 +40,10 @@ files:
|
|
40
40
|
- VERSION
|
41
41
|
- bugsnag.gemspec
|
42
42
|
- lib/bugsnag.rb
|
43
|
+
- lib/bugsnag/breadcrumb_type.rb
|
43
44
|
- lib/bugsnag/breadcrumbs/breadcrumb.rb
|
44
45
|
- lib/bugsnag/breadcrumbs/breadcrumbs.rb
|
46
|
+
- lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb
|
45
47
|
- lib/bugsnag/breadcrumbs/validator.rb
|
46
48
|
- lib/bugsnag/cleaner.rb
|
47
49
|
- lib/bugsnag/code_extractor.rb
|
@@ -49,12 +51,15 @@ files:
|
|
49
51
|
- lib/bugsnag/delivery.rb
|
50
52
|
- lib/bugsnag/delivery/synchronous.rb
|
51
53
|
- lib/bugsnag/delivery/thread_queue.rb
|
54
|
+
- lib/bugsnag/error.rb
|
55
|
+
- lib/bugsnag/event.rb
|
52
56
|
- lib/bugsnag/helpers.rb
|
53
57
|
- lib/bugsnag/integrations/delayed_job.rb
|
54
58
|
- lib/bugsnag/integrations/mailman.rb
|
55
59
|
- lib/bugsnag/integrations/mongo.rb
|
56
60
|
- lib/bugsnag/integrations/que.rb
|
57
61
|
- lib/bugsnag/integrations/rack.rb
|
62
|
+
- lib/bugsnag/integrations/rails/active_job.rb
|
58
63
|
- lib/bugsnag/integrations/rails/active_record_rescue.rb
|
59
64
|
- lib/bugsnag/integrations/rails/controller_methods.rb
|
60
65
|
- lib/bugsnag/integrations/rails/rails_breadcrumbs.rb
|
@@ -64,6 +69,7 @@ files:
|
|
64
69
|
- lib/bugsnag/integrations/shoryuken.rb
|
65
70
|
- lib/bugsnag/integrations/sidekiq.rb
|
66
71
|
- lib/bugsnag/meta_data.rb
|
72
|
+
- lib/bugsnag/middleware/active_job.rb
|
67
73
|
- lib/bugsnag/middleware/breadcrumbs.rb
|
68
74
|
- lib/bugsnag/middleware/callbacks.rb
|
69
75
|
- lib/bugsnag/middleware/classify_error.rb
|
@@ -88,6 +94,7 @@ files:
|
|
88
94
|
- lib/bugsnag/tasks.rb
|
89
95
|
- lib/bugsnag/tasks/bugsnag.rake
|
90
96
|
- lib/bugsnag/utility/circular_buffer.rb
|
97
|
+
- lib/bugsnag/utility/metadata_delegate.rb
|
91
98
|
- lib/bugsnag/version.rb
|
92
99
|
- lib/generators/bugsnag/bugsnag_generator.rb
|
93
100
|
homepage: https://github.com/bugsnag/bugsnag-ruby
|
@@ -109,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
116
|
- !ruby/object:Gem::Version
|
110
117
|
version: '0'
|
111
118
|
requirements: []
|
112
|
-
rubygems_version: 3.2.
|
119
|
+
rubygems_version: 3.2.11
|
113
120
|
signing_key:
|
114
121
|
specification_version: 4
|
115
122
|
summary: Ruby notifier for bugsnag.com
|