bugsnag 6.16.0 → 6.17.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9bb31732c622071a10627844a093751bf767b5ef56471a705d79925c65fdb74
4
- data.tar.gz: 22d0d2499b04005fcbeec5dbddfa5ba9cd456f9559f550044af84d8cb0478c98
3
+ metadata.gz: 7bc3da7c0b78fcf5ccdccee2cc11c2da66b0ed121efd6ee4959c3defa4faf78b
4
+ data.tar.gz: 9ee38d85d5156b4820782f54076f4209c5adf333505f701e9498ed0eafd99a1a
5
5
  SHA512:
6
- metadata.gz: b3849f0fc864298c2115cbff97cfb4d6896298b82eb1fd2b1a71063360954fd7b463aa57723d282e47981039723662d7f85f837bcb39d82b4c9d8b04d14db2a8
7
- data.tar.gz: e9562a284de421e222737cb786968e5eade6318291d388a95233335e574b27bf41c66f76a41975047ffc0016ad586520588b068fc3622f16f5c5dc2ac48daf72
6
+ metadata.gz: 6962b73237abdfed471b6fdb835a0fb57f6360dc86efa4c8bd2049c0c354332a214626a48c700e9e0edf29c6848678883d3cddd9bcc040b42057a6e7d03f2fe5
7
+ data.tar.gz: 5e1a14700a57fc44f3d9ad9cf6f6208fe26a1bc590b92e56a56b5a5352891c7e75dd29c28a01a0edf7e297a23bb0728f5484205119a4476e768306e415db6fde
@@ -0,0 +1,11 @@
1
+ --charset UTF-8
2
+ --fail-on-warning
3
+ --hide-api private
4
+ --no-private
5
+ --protected
6
+ --title "bugsnag-ruby API Documentation"
7
+ lib/**/*.rb
8
+ -
9
+ README.md
10
+ CONTRIBUTING.md
11
+ CHANGELOG.md
@@ -1,6 +1,16 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## 6.17.0 (27 August 2020)
5
+
6
+ ### Enhancements
7
+
8
+ * Sidekiq now uses `thread_queue` delivery by default
9
+ | [#626](https://github.com/bugsnag/bugsnag-ruby/pull/626)
10
+
11
+ * Rescue now uses `thread_queue` delivery when `at_exit` hooks are enabled
12
+ | [#629](https://github.com/bugsnag/bugsnag-ruby/pull/629)
13
+
4
14
  ## 6.16.0 (12 August 2020)
5
15
 
6
16
  ### Enhancements
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.16.0
1
+ 6.17.0
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "https://github.com/bugsnag/bugsnag-ruby"
11
11
  s.licenses = ["MIT"]
12
12
 
13
- s.files = `git ls-files -z lib bugsnag.gemspec VERSION`.split("\x0")
13
+ s.files = `git ls-files -z lib bugsnag.gemspec VERSION .yardopts`.split("\x0")
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
16
16
  "README.md",
@@ -44,7 +44,10 @@ module Bugsnag
44
44
  ##
45
45
  # Configure the Bugsnag notifier application-wide settings.
46
46
  #
47
- # Yields a configuration object to use to set application settings.
47
+ # Yields a {Configuration} object to use to set application settings.
48
+ #
49
+ # @yieldparam configuration [Configuration]
50
+ # @return [void]
48
51
  def configure(validate_api_key=true)
49
52
  yield(configuration) if block_given?
50
53
 
@@ -125,7 +128,9 @@ module Bugsnag
125
128
  end
126
129
 
127
130
  ##
128
- # Registers an at_exit function to automatically catch errors on exit
131
+ # Registers an at_exit function to automatically catch errors on exit.
132
+ #
133
+ # @return [void]
129
134
  def register_at_exit
130
135
  return if at_exit_handler_installed?
131
136
  @exit_handler_added = true
@@ -142,14 +147,19 @@ module Bugsnag
142
147
  end
143
148
 
144
149
  ##
145
- # Checks if an at_exit handler has been added
150
+ # Checks if an at_exit handler has been added.
151
+ #
152
+ # The {Bugsnag#configure} method will add this automatically, but it can be
153
+ # added manually using {Bugsnag#register_at_exit}.
154
+ #
155
+ # @return [Boolean]
146
156
  def at_exit_handler_installed?
147
157
  @exit_handler_added ||= false
148
158
  end
149
159
 
150
- # Configuration getters
151
160
  ##
152
161
  # Returns the client's Configuration object, or creates one if not yet created.
162
+ #
153
163
  # @return [Configuration]
154
164
  def configuration
155
165
  @configuration = nil unless defined?(@configuration)
@@ -158,6 +168,8 @@ module Bugsnag
158
168
 
159
169
  ##
160
170
  # Returns the client's SessionTracker object, or creates one if not yet created.
171
+ #
172
+ # @return [SessionTracker]
161
173
  def session_tracker
162
174
  @session_tracker = nil unless defined?(@session_tracker)
163
175
  @session_tracker || LOCK.synchronize { @session_tracker ||= Bugsnag::SessionTracker.new}
@@ -181,7 +193,10 @@ module Bugsnag
181
193
  Bugsnag.configuration.request_data[:before_callbacks] ||= []
182
194
  end
183
195
 
184
- # Attempts to load all integrations through auto-discovery
196
+ ##
197
+ # Attempts to load all integrations through auto-discovery.
198
+ #
199
+ # @return [void]
185
200
  def load_integrations
186
201
  require "bugsnag/integrations/railtie" if defined?(Rails::Railtie)
187
202
  INTEGRATIONS.each do |integration|
@@ -192,7 +207,11 @@ module Bugsnag
192
207
  end
193
208
  end
194
209
 
195
- # Load a specific integration
210
+ ##
211
+ # Load a specific integration.
212
+ #
213
+ # @param integration [Symbol] One of the integrations in {INTEGRATIONS}
214
+ # @return [void]
196
215
  def load_integration(integration)
197
216
  integration = :railtie if integration == :rails
198
217
  if INTEGRATIONS.include?(integration) || integration == :railtie
@@ -209,6 +228,7 @@ module Bugsnag
209
228
  # @param meta_data [Hash] String, Numeric, or Boolean meta data to attach
210
229
  # @param type [String] the breadcrumb type, from Bugsnag::Breadcrumbs::VALID_BREADCRUMB_TYPES
211
230
  # @param auto [Symbol] set to :auto if the breadcrumb is automatically created
231
+ # @return [void]
212
232
  def leave_breadcrumb(name, meta_data={}, type=Bugsnag::Breadcrumbs::MANUAL_BREADCRUMB_TYPE, auto=:manual)
213
233
  breadcrumb = Bugsnag::Breadcrumbs::Breadcrumb.new(name, type, meta_data, auto)
214
234
  validator = Bugsnag::Breadcrumbs::Validator.new(configuration)
@@ -15,64 +15,134 @@ require "bugsnag/breadcrumbs/breadcrumbs"
15
15
 
16
16
  module Bugsnag
17
17
  class Configuration
18
+ # Your Integration API Key
19
+ # @return [String, nil]
18
20
  attr_accessor :api_key
21
+
22
+ # The current stage of the release process, e.g. 'development', production'
23
+ # @return [String, nil]
19
24
  attr_accessor :release_stage
25
+
26
+ # A list of which release stages should cause notifications to be sent
27
+ # @return [Array<String>, nil]
20
28
  attr_accessor :notify_release_stages
29
+
30
+ # Whether notifications should automatically be sent
31
+ # @return [Boolean]
21
32
  attr_accessor :auto_notify
33
+
34
+ # @return [String, nil]
22
35
  attr_accessor :ca_file
36
+
37
+ # Whether to automatically attach the Rack environment to notifications
38
+ # @return [Boolean]
23
39
  attr_accessor :send_environment
40
+
41
+ # Whether code snippets from the exception stacktrace should be sent with notifications
42
+ # @return [Boolean]
24
43
  attr_accessor :send_code
44
+
45
+ # Any stacktrace lines that match this path will be marked as 'in project'
46
+ # @return [String, nil]
25
47
  attr_accessor :project_root
48
+
49
+ # The current version of your application
50
+ # @return [String, nil]
26
51
  attr_accessor :app_version
52
+
53
+ # A list of keys that should be filtered out from the report and breadcrumb
54
+ # metadata before sending them to Bugsnag
55
+ # @return [Set<String, Regexp>]
27
56
  attr_accessor :meta_data_filters
57
+
58
+ # The logger to use for Bugsnag log messages
59
+ # @return [Logger]
28
60
  attr_accessor :logger
61
+
62
+ # The middleware stack that will run on every notification
63
+ # @return [MiddlewareStack]
29
64
  attr_accessor :middleware
65
+
66
+ # @api private
67
+ # @return [MiddlewareStack]
30
68
  attr_accessor :internal_middleware
69
+
70
+ # The host address of the HTTP proxy that should be used when making requests
71
+ # @see parse_proxy
72
+ # @return [String, nil]
31
73
  attr_accessor :proxy_host
74
+
75
+ # The port number of the HTTP proxy that should be used when making requests
76
+ # @see parse_proxy
77
+ # @return [Integer, nil]
32
78
  attr_accessor :proxy_port
79
+
80
+ # The user that should be used when making requests via a HTTP proxy
81
+ # @see parse_proxy
82
+ # @return [String, nil]
33
83
  attr_accessor :proxy_user
84
+
85
+ # The password for the user that should be used when making requests via a HTTP proxy
86
+ # @see parse_proxy
87
+ # @return [String, nil]
34
88
  attr_accessor :proxy_password
89
+
90
+ # The HTTP request timeout, defaults to 15 seconds
91
+ # @return [Integer]
35
92
  attr_accessor :timeout
93
+
94
+ # The name or descriptor of the Ruby server host
95
+ # @return [String]
36
96
  attr_accessor :hostname
97
+
98
+ # @api private
99
+ # @return [Hash{String => String}]
37
100
  attr_accessor :runtime_versions
101
+
102
+ # Exception classes that will be discarded and not sent to Bugsnag
103
+ # @return [Set<String, Regexp>]
38
104
  attr_accessor :discard_classes
105
+
106
+ # Whether Bugsnag should automatically record sessions
107
+ # @return [Boolean]
39
108
  attr_accessor :auto_capture_sessions
40
109
 
41
- ##
42
110
  # @deprecated Use {#discard_classes} instead
111
+ # @return [Set<Class, Proc>]
43
112
  attr_accessor :ignore_classes
44
113
 
45
- ##
46
- # @return [String] URL error notifications will be delivered to
114
+ # The URL error notifications will be delivered to
115
+ # @return [String]
47
116
  attr_reader :notify_endpoint
48
117
  alias :endpoint :notify_endpoint
49
118
 
50
- ##
51
- # @return [String] URL session notifications will be delivered to
119
+ # The URL session notifications will be delivered to
120
+ # @return [String]
52
121
  attr_reader :session_endpoint
53
122
 
54
- ##
55
- # @return [Boolean] whether any sessions types will be delivered
123
+ # Whether sessions will be delivered
124
+ # @return [Boolean]
56
125
  attr_reader :enable_sessions
57
126
 
58
- ##
59
- # @return [Array<String>] strings indicating allowable automatic breadcrumb types
127
+ # A list of strings indicating allowable automatic breadcrumb types
128
+ # @see Bugsnag::Breadcrumbs::VALID_BREADCRUMB_TYPES
129
+ # @return [Array<String>]
60
130
  attr_accessor :enabled_automatic_breadcrumb_types
61
131
 
62
- ##
63
- # @return [Array<#call>] callables to be run before a breadcrumb is logged
132
+ # Callables to be run before a breadcrumb is logged
133
+ # @return [Array<#call>]
64
134
  attr_accessor :before_breadcrumb_callbacks
65
135
 
66
- ##
67
- # @return [Integer] the maximum allowable amount of breadcrumbs per thread
136
+ # The maximum allowable amount of breadcrumbs per thread
137
+ # @return [Integer]
68
138
  attr_reader :max_breadcrumbs
69
139
 
70
- ##
71
- # @return [Regexp] matching file paths out of project
140
+ #
141
+ # @return [Regexp]
72
142
  attr_accessor :vendor_path
73
143
 
74
- ##
75
- # @return [Array]
144
+ # @api private
145
+ # @return [Array<String>]
76
146
  attr_reader :scopes_to_filter
77
147
 
78
148
  API_KEY_REGEX = /[0-9a-f]{32}/i
@@ -96,6 +166,7 @@ module Bugsnag
96
166
  # Path to vendored code. Used to mark file paths as out of project.
97
167
  DEFAULT_VENDOR_PATH = %r{^(vendor/|\.bundle/)}
98
168
 
169
+ # @api private
99
170
  DEFAULT_SCOPES_TO_FILTER = ['events.metaData', 'events.breadcrumbs.metaData'].freeze
100
171
 
101
172
  alias :track_sessions :auto_capture_sessions
@@ -177,6 +248,7 @@ module Bugsnag
177
248
  # Gets the delivery_method that Bugsnag will use to communicate with the
178
249
  # notification endpoint.
179
250
  #
251
+ # @return [Symbol]
180
252
  def delivery_method
181
253
  @delivery_method || @default_delivery_method || :thread_queue
182
254
  end
@@ -185,6 +257,10 @@ module Bugsnag
185
257
  # Sets the delivery_method that Bugsnag will use to communicate with the
186
258
  # notification endpoint.
187
259
  #
260
+ # The default delivery methods are ':thread_queue' and ':synchronous'.
261
+ #
262
+ # @param delivery_method [Symbol]
263
+ # @return [void]
188
264
  def delivery_method=(delivery_method)
189
265
  @delivery_method = delivery_method
190
266
  end
@@ -193,6 +269,10 @@ module Bugsnag
193
269
  # Used to set a new default delivery method that will be used if one is not
194
270
  # set with #delivery_method.
195
271
  #
272
+ # @api private
273
+ #
274
+ # @param delivery_method [Symbol]
275
+ # @return [void]
196
276
  def default_delivery_method=(delivery_method)
197
277
  @default_delivery_method = delivery_method
198
278
  end
@@ -248,12 +328,16 @@ module Bugsnag
248
328
  ##
249
329
  # Indicates whether the notifier should send a notification based on the
250
330
  # configured release stage.
331
+ #
332
+ # @return [Boolean]
251
333
  def should_notify_release_stage?
252
334
  @release_stage.nil? || @notify_release_stages.nil? || @notify_release_stages.include?(@release_stage)
253
335
  end
254
336
 
255
337
  ##
256
338
  # Tests whether the configured API key is valid.
339
+ #
340
+ # @return [Boolean]
257
341
  def valid_api_key?
258
342
  !api_key.nil? && api_key =~ API_KEY_REGEX
259
343
  end
@@ -261,48 +345,68 @@ module Bugsnag
261
345
  ##
262
346
  # Returns the array of data that will be automatically attached to every
263
347
  # error notification.
348
+ #
349
+ # @return [Hash]
264
350
  def request_data
265
351
  Thread.current[THREAD_LOCAL_NAME] ||= {}
266
352
  end
267
353
 
268
354
  ##
269
355
  # Sets an entry in the array of data attached to every error notification.
356
+ #
357
+ # @param key [String, #to_s]
358
+ # @param value [Object]
359
+ # @return [void]
270
360
  def set_request_data(key, value)
271
361
  self.request_data[key] = value
272
362
  end
273
363
 
274
364
  ##
275
365
  # Unsets an entry in the array of data attached to every error notification.
366
+ #
367
+ # @param (see set_request_data)
368
+ # @return [void]
276
369
  def unset_request_data(key, value)
277
370
  self.request_data.delete(key)
278
371
  end
279
372
 
280
373
  ##
281
374
  # Clears the array of data attached to every error notification.
375
+ #
376
+ # @return [void]
282
377
  def clear_request_data
283
378
  Thread.current[THREAD_LOCAL_NAME] = nil
284
379
  end
285
380
 
286
381
  ##
287
382
  # Logs an info level message
383
+ #
384
+ # @param message [String, #to_s] The message to log
288
385
  def info(message)
289
386
  logger.info(PROG_NAME) { message }
290
387
  end
291
388
 
292
389
  ##
293
390
  # Logs a warning level message
391
+ #
392
+ # @param (see info)
294
393
  def warn(message)
295
394
  logger.warn(PROG_NAME) { message }
296
395
  end
297
396
 
298
397
  ##
299
398
  # Logs a debug level message
399
+ #
400
+ # @param (see info)
300
401
  def debug(message)
301
402
  logger.debug(PROG_NAME) { message }
302
403
  end
303
404
 
304
405
  ##
305
406
  # Parses and sets proxy from a uri
407
+ #
408
+ # @param uri [String, #to_s] The URI to parse and extract proxy details from
409
+ # @return [void]
306
410
  def parse_proxy(uri)
307
411
  proxy = URI.parse(uri)
308
412
  self.proxy_host = proxy.host
@@ -314,7 +418,8 @@ module Bugsnag
314
418
  ##
315
419
  # Sets the maximum allowable amount of breadcrumbs
316
420
  #
317
- # @param [Integer] the new maximum breadcrumb limit
421
+ # @param new_max_breadcrumbs [Integer] the new maximum breadcrumb limit
422
+ # @return [void]
318
423
  def max_breadcrumbs=(new_max_breadcrumbs)
319
424
  @max_breadcrumbs = new_max_breadcrumbs
320
425
  breadcrumbs.max_items = new_max_breadcrumbs
@@ -330,9 +435,10 @@ module Bugsnag
330
435
 
331
436
  # Sets the notification endpoint
332
437
  #
333
- # @param new_notify_endpoint [String] The URL to deliver error notifications to
334
- #
335
438
  # @deprecated Use {#set_endpoints} instead
439
+ #
440
+ # @param new_notify_endpoint [String] The URL to deliver error notifications to
441
+ # @return [void]
336
442
  def endpoint=(new_notify_endpoint)
337
443
  warn("The 'endpoint' configuration option is deprecated. The 'set_endpoints' method should be used instead")
338
444
  set_endpoints(new_notify_endpoint, session_endpoint) # Pass the existing session_endpoint through so it doesn't get overwritten
@@ -341,9 +447,10 @@ module Bugsnag
341
447
  ##
342
448
  # Sets the sessions endpoint
343
449
  #
344
- # @param new_session_endpoint [String] The URL to deliver session notifications to
345
- #
346
450
  # @deprecated Use {#set_endpoints} instead
451
+ #
452
+ # @param new_session_endpoint [String] The URL to deliver session notifications to
453
+ # @return [void]
347
454
  def session_endpoint=(new_session_endpoint)
348
455
  warn("The 'session_endpoint' configuration option is deprecated. The 'set_endpoints' method should be used instead")
349
456
  set_endpoints(notify_endpoint, new_session_endpoint) # Pass the existing notify_endpoint through so it doesn't get overwritten
@@ -354,13 +461,16 @@ module Bugsnag
354
461
  #
355
462
  # @param new_notify_endpoint [String] The URL to deliver error notifications to
356
463
  # @param new_session_endpoint [String] The URL to deliver session notifications to
464
+ # @return [void]
357
465
  def set_endpoints(new_notify_endpoint, new_session_endpoint)
358
466
  @notify_endpoint = new_notify_endpoint
359
467
  @session_endpoint = new_session_endpoint
360
468
  end
361
469
 
362
470
  ##
363
- # Disables session tracking and delivery. Cannot be undone
471
+ # Disables session tracking and delivery. Cannot be undone
472
+ #
473
+ # @return [void]
364
474
  def disable_sessions
365
475
  self.auto_capture_sessions = false
366
476
  @enable_sessions = false
@@ -58,16 +58,23 @@ Resque::Failure::Bugsnag = Bugsnag::Resque
58
58
  # Auto-load the failure backend
59
59
  Bugsnag::Resque.add_failure_backend
60
60
 
61
- if Resque::Worker.new(:bugsnag_fork_check).fork_per_job?
61
+ worker = Resque::Worker.new(:bugsnag_fork_check)
62
+
63
+ # If at_exit hooks are not enabled then we can't use the thread queue delivery
64
+ # method because it relies on an at_exit hook to ensure the queue is flushed
65
+ can_use_thread_queue = worker.respond_to?(:run_at_exit_hooks) && worker.run_at_exit_hooks
66
+ default_delivery_method = can_use_thread_queue ? :thread_queue : :synchronous
67
+
68
+ if worker.fork_per_job?
62
69
  Resque.after_fork do
63
70
  Bugsnag.configuration.detected_app_type = "resque"
64
- Bugsnag.configuration.default_delivery_method = :synchronous
71
+ Bugsnag.configuration.default_delivery_method = default_delivery_method
65
72
  Bugsnag.configuration.runtime_versions["resque"] = ::Resque::VERSION
66
73
  end
67
74
  else
68
75
  Resque.before_first_fork do
69
76
  Bugsnag.configuration.detected_app_type = "resque"
70
- Bugsnag.configuration.default_delivery_method = :synchronous
77
+ Bugsnag.configuration.default_delivery_method = default_delivery_method
71
78
  Bugsnag.configuration.runtime_versions["resque"] = ::Resque::VERSION
72
79
  end
73
80
  end
@@ -14,7 +14,6 @@ module Bugsnag
14
14
  def initialize
15
15
  Bugsnag.configuration.internal_middleware.use(Bugsnag::Middleware::Sidekiq)
16
16
  Bugsnag.configuration.detected_app_type = "sidekiq"
17
- Bugsnag.configuration.default_delivery_method = :synchronous
18
17
  Bugsnag.configuration.runtime_versions["sidekiq"] = ::Sidekiq::VERSION
19
18
  end
20
19
 
@@ -19,24 +19,87 @@ module Bugsnag
19
19
 
20
20
  CURRENT_PAYLOAD_VERSION = "4.0"
21
21
 
22
- attr_reader :unhandled
22
+ # Whether this report is for a handled or unhandled error
23
+ # @return [Boolean]
24
+ attr_reader :unhandled
25
+
26
+ # Your Integration API Key
27
+ # @see Configuration#api_key
28
+ # @return [String, nil]
23
29
  attr_accessor :api_key
30
+
31
+ # The type of application executing the current code
32
+ # @see Configuration#app_type
33
+ # @return [String, nil]
24
34
  attr_accessor :app_type
35
+
36
+ # The current version of your application
37
+ # @return [String, nil]
25
38
  attr_accessor :app_version
39
+
40
+ # The list of breadcrumbs attached to this report
41
+ # @return [Array<Breadcrumb>]
26
42
  attr_accessor :breadcrumbs
43
+
44
+ # @api private
45
+ # @return [Configuration]
27
46
  attr_accessor :configuration
47
+
48
+ # Additional context for this report
49
+ # @return [String, nil]
28
50
  attr_accessor :context
51
+
52
+ # The delivery method that will be used for this report
53
+ # @see Configuration#delivery_method
54
+ # @return [Symbol]
29
55
  attr_accessor :delivery_method
56
+
57
+ # The list of exceptions in this report
58
+ # @return [Array<Hash>]
30
59
  attr_accessor :exceptions
60
+
61
+ # @see Configuration#hostname
62
+ # @return [String]
31
63
  attr_accessor :hostname
64
+
65
+ # @api private
66
+ # @see Configuration#runtime_versions
67
+ # @return [Hash{String => String}]
32
68
  attr_accessor :runtime_versions
69
+
70
+ # All errors with the same grouping hash will be grouped in the Bugsnag app
71
+ # @return [String]
33
72
  attr_accessor :grouping_hash
73
+
74
+ # Arbitrary metadata attached to this report
75
+ # @return [Hash]
34
76
  attr_accessor :meta_data
77
+
78
+ # The raw Exception instances for this report
79
+ # @see #exceptions
80
+ # @return [Array<Exception>]
35
81
  attr_accessor :raw_exceptions
82
+
83
+ # The current stage of the release process, e.g. 'development', production'
84
+ # @see Configuration#release_stage
85
+ # @return [String, nil]
36
86
  attr_accessor :release_stage
87
+
88
+ # The session that active when this report was generated
89
+ # @see SessionTracker#get_current_session
90
+ # @return [Hash]
37
91
  attr_accessor :session
92
+
93
+ # The severity of this report, e.g. 'error', 'warning'
94
+ # @return [String]
38
95
  attr_accessor :severity
96
+
97
+ # @api private
98
+ # @return [Hash]
39
99
  attr_accessor :severity_reason
100
+
101
+ # The current user when this report was generated
102
+ # @return [Hash]
40
103
  attr_accessor :user
41
104
 
42
105
  ##
@@ -66,6 +129,12 @@ module Bugsnag
66
129
 
67
130
  ##
68
131
  # Add a new metadata tab to this notification.
132
+ #
133
+ # @param name [String, #to_s] The name of the tab to add
134
+ # @param value [Hash, Object] The value to add to the tab. If the tab already
135
+ # exists, this will be merged with the existing values. If a Hash is not
136
+ # given, the value will be placed into the 'custom' tab
137
+ # @return [void]
69
138
  def add_tab(name, value)
70
139
  return if name.nil?
71
140
 
@@ -81,6 +150,9 @@ module Bugsnag
81
150
 
82
151
  ##
83
152
  # Removes a metadata tab from this notification.
153
+ #
154
+ # @param name [String]
155
+ # @return [void]
84
156
  def remove_tab(name)
85
157
  return if name.nil?
86
158
 
@@ -89,6 +161,8 @@ module Bugsnag
89
161
 
90
162
  ##
91
163
  # Builds and returns the exception payload for this notification.
164
+ #
165
+ # @return [Hash]
92
166
  def as_json
93
167
  # Build the payload's exception event
94
168
  payload_event = {
@@ -129,6 +203,8 @@ module Bugsnag
129
203
 
130
204
  ##
131
205
  # Returns the headers required for the notification.
206
+ #
207
+ # @return [Hash{String => String}]
132
208
  def headers
133
209
  {
134
210
  "Bugsnag-Api-Key" => api_key,
@@ -139,18 +215,24 @@ module Bugsnag
139
215
 
140
216
  ##
141
217
  # Whether this report should be ignored and not sent.
218
+ #
219
+ # @return [Boolean]
142
220
  def ignore?
143
221
  @should_ignore
144
222
  end
145
223
 
146
224
  ##
147
225
  # Data set on the configuration to be attached to every error notification.
226
+ #
227
+ # @return [Hash]
148
228
  def request_data
149
229
  configuration.request_data
150
230
  end
151
231
 
152
232
  ##
153
233
  # Tells the client this report should not be sent.
234
+ #
235
+ # @return [void]
154
236
  def ignore!
155
237
  @should_ignore = true
156
238
  end
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.16.0
4
+ version: 6.17.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: 2020-08-12 00:00:00.000000000 Z
11
+ date: 2020-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -33,6 +33,7 @@ extra_rdoc_files:
33
33
  - README.md
34
34
  - CHANGELOG.md
35
35
  files:
36
+ - ".yardopts"
36
37
  - CHANGELOG.md
37
38
  - LICENSE.txt
38
39
  - README.md