bugsnag 6.16.0 → 6.17.0

Sign up to get free protection for your applications and to get access to all the features.
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