airbrake-ruby 6.0.1 → 6.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/lib/airbrake-ruby/config/processor.rb +6 -0
  3. data/lib/airbrake-ruby/config.rb +3 -3
  4. data/lib/airbrake-ruby/filters/git_last_checkout_filter.rb +1 -1
  5. data/lib/airbrake-ruby/filters/git_repository_filter.rb +7 -1
  6. data/lib/airbrake-ruby/filters/sql_filter.rb +6 -6
  7. data/lib/airbrake-ruby/nested_exception.rb +10 -1
  8. data/lib/airbrake-ruby/notice.rb +5 -3
  9. data/lib/airbrake-ruby/performance_notifier.rb +38 -38
  10. data/lib/airbrake-ruby/stat.rb +1 -1
  11. data/lib/airbrake-ruby/time_truncate.rb +2 -2
  12. data/lib/airbrake-ruby/version.rb +1 -1
  13. data/lib/airbrake-ruby.rb +21 -21
  14. metadata +6 -123
  15. data/spec/airbrake_spec.rb +0 -522
  16. data/spec/async_sender_spec.rb +0 -65
  17. data/spec/backtrace_spec.rb +0 -430
  18. data/spec/benchmark_spec.rb +0 -35
  19. data/spec/code_hunk_spec.rb +0 -124
  20. data/spec/config/processor_spec.rb +0 -151
  21. data/spec/config/validator_spec.rb +0 -204
  22. data/spec/config_spec.rb +0 -188
  23. data/spec/context_spec.rb +0 -54
  24. data/spec/deploy_notifier_spec.rb +0 -50
  25. data/spec/file_cache_spec.rb +0 -35
  26. data/spec/filter_chain_spec.rb +0 -124
  27. data/spec/filters/context_filter_spec.rb +0 -32
  28. data/spec/filters/dependency_filter_spec.rb +0 -14
  29. data/spec/filters/exception_attributes_filter_spec.rb +0 -52
  30. data/spec/filters/gem_root_filter_spec.rb +0 -44
  31. data/spec/filters/git_last_checkout_filter_spec.rb +0 -61
  32. data/spec/filters/git_repository_filter.rb +0 -61
  33. data/spec/filters/git_revision_filter_spec.rb +0 -126
  34. data/spec/filters/keys_allowlist_spec.rb +0 -204
  35. data/spec/filters/keys_blocklist_spec.rb +0 -242
  36. data/spec/filters/root_directory_filter_spec.rb +0 -39
  37. data/spec/filters/sql_filter_spec.rb +0 -274
  38. data/spec/filters/system_exit_filter_spec.rb +0 -16
  39. data/spec/filters/thread_filter_spec.rb +0 -281
  40. data/spec/fixtures/notroot.txt +0 -7
  41. data/spec/fixtures/project_root/code.rb +0 -221
  42. data/spec/fixtures/project_root/empty_file.rb +0 -0
  43. data/spec/fixtures/project_root/long_line.txt +0 -1
  44. data/spec/fixtures/project_root/short_file.rb +0 -3
  45. data/spec/fixtures/project_root/vendor/bundle/ignored_file.rb +0 -5
  46. data/spec/helpers.rb +0 -9
  47. data/spec/ignorable_spec.rb +0 -14
  48. data/spec/inspectable_spec.rb +0 -45
  49. data/spec/loggable_spec.rb +0 -17
  50. data/spec/monotonic_time_spec.rb +0 -25
  51. data/spec/nested_exception_spec.rb +0 -73
  52. data/spec/notice_notifier/options_spec.rb +0 -269
  53. data/spec/notice_notifier_spec.rb +0 -361
  54. data/spec/notice_spec.rb +0 -300
  55. data/spec/performance_breakdown_spec.rb +0 -11
  56. data/spec/performance_notifier_spec.rb +0 -645
  57. data/spec/promise_spec.rb +0 -203
  58. data/spec/query_spec.rb +0 -11
  59. data/spec/queue_spec.rb +0 -18
  60. data/spec/remote_settings/callback_spec.rb +0 -162
  61. data/spec/remote_settings/settings_data_spec.rb +0 -348
  62. data/spec/remote_settings_spec.rb +0 -201
  63. data/spec/request_spec.rb +0 -9
  64. data/spec/response_spec.rb +0 -110
  65. data/spec/spec_helper.rb +0 -100
  66. data/spec/stashable_spec.rb +0 -23
  67. data/spec/stat_spec.rb +0 -39
  68. data/spec/sync_sender_spec.rb +0 -168
  69. data/spec/tdigest_spec.rb +0 -235
  70. data/spec/thread_pool_spec.rb +0 -196
  71. data/spec/time_truncate_spec.rb +0 -15
  72. data/spec/timed_trace_spec.rb +0 -127
  73. data/spec/truncator_spec.rb +0 -267
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f89d6e09b27f36f4d4450eeb9dd6fb9dff228ffe095769f8b9bcc24a02413842
4
- data.tar.gz: a2b4daefe2139f002a42754b6df05c6c11dca9d80b0ecf440cd0620336a2d87e
3
+ metadata.gz: 7b26c79894b2b9922c3951a91eba90c906bd3164dda7b9e66dfe3f95ed392951
4
+ data.tar.gz: 1b835db3c660cdbfee82a3ef3a67a7237c83a66c3d153377a1fbc50ed4870840
5
5
  SHA512:
6
- metadata.gz: 423f95e5781de19de642d880106b38feca43c98f9223956e4208b616929d6a63c56e1ca223d449115f232e60f0a84f9f0c52c140df708d2deaf20aa2dfca4a3e
7
- data.tar.gz: e09266840dd038be725ad564d6db02696e5c6a0f188eae5206da30cbd2cf454eccbe56cbcf027b454821e6ef1bee29cb8fb2db7c7c61f81ffa6e0ecb1566c133
6
+ metadata.gz: eb9e13c39dfa7f0f228716c38ff1cbe7371f2c12a7455489b4179815c4fb345e8720e95617cccfd2127c946b1772f6ecf39e3b886b0b2af9cdc8bdd3dce6c1f4
7
+ data.tar.gz: 6081c2a922b9334e31220a0f7d87309dd054a6d2ef5837f254d719a85dd4914a004f5fc6fe2f8adbffdd649f24320cb04973d0439e1a5b41665ee6217fa7e237
@@ -43,8 +43,14 @@ module Airbrake
43
43
  def process_remote_configuration
44
44
  return unless @config.remote_config
45
45
  return unless @project_id
46
+
47
+ # Never poll remote configuration in the test environment.
46
48
  return if @config.environment == 'test'
47
49
 
50
+ # If the current environment is ignored, don't try to poll remote
51
+ # configuration.
52
+ return if @config.ignore_environments.include?(@config.environment)
53
+
48
54
  RemoteSettings.poll(@project_id, @config.remote_config_host) do |data|
49
55
  @poll_callback.call(data)
50
56
  end
@@ -248,14 +248,14 @@ module Airbrake
248
248
 
249
249
  # @return [Promise] resolved promise if neither of the performance options
250
250
  # reject it, false otherwise
251
- def check_performance_options(resource)
251
+ def check_performance_options(metric)
252
252
  promise = Airbrake::Promise.new
253
253
 
254
254
  if !performance_stats
255
255
  promise.reject("The Performance Stats feature is disabled")
256
- elsif resource.is_a?(Airbrake::Query) && !query_stats
256
+ elsif metric.is_a?(Airbrake::Query) && !query_stats
257
257
  promise.reject("The Query Stats feature is disabled")
258
- elsif resource.is_a?(Airbrake::Queue) && !job_stats
258
+ elsif metric.is_a?(Airbrake::Queue) && !job_stats
259
259
  promise.reject("The Job Stats feature is disabled")
260
260
  else
261
261
  promise
@@ -27,7 +27,7 @@ module Airbrake
27
27
  @git_path = File.join(root_directory, '.git')
28
28
  @weight = 116
29
29
  @last_checkout = nil
30
- @deploy_username = ENV['AIRBRAKE_DEPLOY_USERNAME']
30
+ @deploy_username = ENV.fetch('AIRBRAKE_DEPLOY_USERNAME', nil)
31
31
  end
32
32
 
33
33
  # @macro call_filter
@@ -49,7 +49,13 @@ module Airbrake
49
49
  def detect_git_version
50
50
  return unless which('git')
51
51
 
52
- Gem::Version.new(`git --version`.split[2])
52
+ begin
53
+ Gem::Version.new(`git --version`.split[2])
54
+ rescue Errno::EAGAIN
55
+ # Bugfix for the case when the system cannot allocate memory for
56
+ # a fork() call: https://github.com/airbrake/airbrake-ruby/issues/680
57
+ nil
58
+ end
53
59
  end
54
60
 
55
61
  # Cross-platform way to tell if an executable is accessible.
@@ -108,20 +108,20 @@ module Airbrake
108
108
  @regexp = Regexp.union(features)
109
109
  end
110
110
 
111
- # @param [Airbrake::Query] resource
112
- def call(resource)
113
- return unless resource.respond_to?(:query)
111
+ # @param [Airbrake::Query] metric
112
+ def call(metric)
113
+ return unless metric.respond_to?(:query)
114
114
 
115
- query = resource.query
115
+ query = metric.query
116
116
  if IGNORED_QUERIES.any? { |q| q =~ query }
117
- resource.ignore!
117
+ metric.ignore!
118
118
  return
119
119
  end
120
120
 
121
121
  q = query.gsub(@regexp, FILTERED)
122
122
  q.gsub!(POST_FILTER, FILTERED) if q =~ POST_FILTER
123
123
  q = ERROR_MSG if UNMATCHED_PAIR[@dialect] =~ q
124
- resource.query = q
124
+ metric.query = q
125
125
  end
126
126
  end
127
127
  end
@@ -9,6 +9,15 @@ module Airbrake
9
9
  # can unwrap. Exceptions that have a longer cause chain will be ignored
10
10
  MAX_NESTED_EXCEPTIONS = 3
11
11
 
12
+ # On Ruby 3.1+, the error highlighting gem can produce messages that can
13
+ # span multiple lines. We don't display multiline error messages in the
14
+ # title of the notice in the Airbrake dashboard. Therefore, we want to strip
15
+ # out the higlighting part so that the errors look consistent. The full
16
+ # message with the exception will be attached to the notice body.
17
+ #
18
+ # @return [String]
19
+ RUBY_31_ERROR_HIGHLIGHTING_DIVIDER = "\n\n".freeze
20
+
12
21
  def initialize(exception)
13
22
  @exception = exception
14
23
  end
@@ -16,7 +25,7 @@ module Airbrake
16
25
  def as_json
17
26
  unwind_exceptions.map do |exception|
18
27
  { type: exception.class.name,
19
- message: exception.message,
28
+ message: exception.message.split(RUBY_31_ERROR_HIGHLIGHTING_DIVIDER).first,
20
29
  backtrace: Backtrace.parse(exception) }
21
30
  end
22
31
  end
@@ -49,16 +49,17 @@ module Airbrake
49
49
  # @api private
50
50
  def initialize(exception, params = {})
51
51
  @config = Airbrake::Config.instance
52
+ @truncator = Airbrake::Truncator.new(PAYLOAD_MAX_SIZE)
53
+
52
54
  @payload = {
53
55
  errors: NestedException.new(exception).as_json,
54
- context: context,
56
+ context: context(exception),
55
57
  environment: {
56
58
  program_name: $PROGRAM_NAME,
57
59
  },
58
60
  session: {},
59
61
  params: params,
60
62
  }
61
- @truncator = Airbrake::Truncator.new(PAYLOAD_MAX_SIZE)
62
63
 
63
64
  stash[:exception] = exception
64
65
  end
@@ -118,7 +119,7 @@ module Airbrake
118
119
 
119
120
  private
120
121
 
121
- def context
122
+ def context(exception)
122
123
  {
123
124
  version: @config.app_version,
124
125
  versions: @config.versions,
@@ -132,6 +133,7 @@ module Airbrake
132
133
  hostname: HOSTNAME,
133
134
 
134
135
  severity: DEFAULT_SEVERITY,
136
+ error_message: @truncator.truncate(exception.message),
135
137
  }.merge(CONTEXT).delete_if { |_key, val| val.nil? || val.empty? }
136
138
  end
137
139
 
@@ -1,6 +1,6 @@
1
1
  module Airbrake
2
- # QueryNotifier aggregates information about SQL queries and periodically sends
3
- # collected data to Airbrake.
2
+ # PerformanceNotifier aggregates performance data and periodically sends it to
3
+ # Airbrake.
4
4
  #
5
5
  # @api public
6
6
  # @since v3.2.0
@@ -21,20 +21,20 @@ module Airbrake
21
21
  @has_payload = @payload.new_cond
22
22
  end
23
23
 
24
- # @param [Hash] resource
24
+ # @param [Hash] metric
25
25
  # @see Airbrake.notify_query
26
26
  # @see Airbrake.notify_request
27
- def notify(resource)
27
+ def notify(metric)
28
28
  @payload.synchronize do
29
- send_resource(resource, sync: false)
29
+ send_metric(metric, sync: false)
30
30
  end
31
31
  end
32
32
 
33
- # @param [Hash] resource
33
+ # @param [Hash] metric
34
34
  # @since v4.10.0
35
35
  # @see Airbrake.notify_queue_sync
36
- def notify_sync(resource)
37
- send_resource(resource, sync: true).value
36
+ def notify_sync(metric)
37
+ send_metric(metric, sync: true).value
38
38
  end
39
39
 
40
40
  # @see Airbrake.add_performance_filter
@@ -78,16 +78,16 @@ module Airbrake
78
78
  end
79
79
  end
80
80
 
81
- def send_resource(resource, sync:)
82
- promise = check_configuration(resource)
81
+ def send_metric(metric, sync:)
82
+ promise = check_configuration(metric)
83
83
  return promise if promise.rejected?
84
84
 
85
- @filter_chain.refine(resource)
86
- if resource.ignored?
87
- return Promise.new.reject("#{resource.class} was ignored by a filter")
85
+ @filter_chain.refine(metric)
86
+ if metric.ignored?
87
+ return Promise.new.reject("#{metric.class} was ignored by a filter")
88
88
  end
89
89
 
90
- update_payload(resource)
90
+ update_payload(metric)
91
91
  if sync || @flush_period == 0
92
92
  send(@sync_sender, @payload, promise)
93
93
  else
@@ -96,29 +96,29 @@ module Airbrake
96
96
  end
97
97
  end
98
98
 
99
- def update_payload(resource)
100
- if (total_stat = @payload[resource])
101
- @payload.key(total_stat).merge(resource)
99
+ def update_payload(metric)
100
+ if (total_stat = @payload[metric])
101
+ @payload.key(total_stat).merge(metric)
102
102
  else
103
- @payload[resource] = { total: Airbrake::Stat.new }
103
+ @payload[metric] = { total: Airbrake::Stat.new }
104
104
  end
105
105
 
106
- @payload[resource][:total].increment_ms(resource.timing)
106
+ @payload[metric][:total].increment_ms(metric.timing)
107
107
 
108
- resource.groups.each do |name, ms|
109
- @payload[resource][name] ||= Airbrake::Stat.new
110
- @payload[resource][name].increment_ms(ms)
108
+ metric.groups.each do |name, ms|
109
+ @payload[metric][name] ||= Airbrake::Stat.new
110
+ @payload[metric][name].increment_ms(ms)
111
111
  end
112
112
  end
113
113
 
114
- def check_configuration(resource)
114
+ def check_configuration(metric)
115
115
  promise = @config.check_configuration
116
116
  return promise if promise.rejected?
117
117
 
118
- promise = @config.check_performance_options(resource)
118
+ promise = @config.check_performance_options(metric)
119
119
  return promise if promise.rejected?
120
120
 
121
- if resource.timing && resource.timing == 0
121
+ if metric.timing && metric.timing == 0
122
122
  return Promise.new.reject(':timing cannot be zero')
123
123
  end
124
124
 
@@ -128,47 +128,47 @@ module Airbrake
128
128
  def send(sender, payload, promise)
129
129
  raise "payload cannot be empty. Race?" if payload.none?
130
130
 
131
- with_grouped_payload(payload) do |resource_hash, destination|
131
+ with_grouped_payload(payload) do |metric_hash, destination|
132
132
  url = URI.join(
133
133
  @config.apm_host,
134
134
  "api/v5/projects/#{@config.project_id}/#{destination}",
135
135
  )
136
136
 
137
137
  logger.debug do
138
- "#{LOG_LABEL} #{self.class.name}##{__method__}: #{resource_hash}"
138
+ "#{LOG_LABEL} #{self.class.name}##{__method__}: #{metric_hash}"
139
139
  end
140
- sender.send(resource_hash, promise, url)
140
+ sender.send(metric_hash, promise, url)
141
141
  end
142
142
 
143
143
  promise
144
144
  end
145
145
 
146
146
  def with_grouped_payload(raw_payload)
147
- grouped_payload = raw_payload.group_by do |resource, _stats|
148
- [resource.cargo, resource.destination]
147
+ grouped_payload = raw_payload.group_by do |metric, _stats|
148
+ [metric.cargo, metric.destination]
149
149
  end
150
150
 
151
- grouped_payload.each do |(cargo, destination), resources|
151
+ grouped_payload.each do |(cargo, destination), metrics|
152
152
  payload = {}
153
- payload[cargo] = serialize_resources(resources)
153
+ payload[cargo] = serialize_metrics(metrics)
154
154
  payload['environment'] = @config.environment if @config.environment
155
155
 
156
156
  yield(payload, destination)
157
157
  end
158
158
  end
159
159
 
160
- def serialize_resources(resources)
161
- resources.map do |resource, stats|
162
- resource_hash = resource.to_h.merge!(stats[:total].to_h)
160
+ def serialize_metrics(metrics)
161
+ metrics.map do |metric, stats|
162
+ metric_hash = metric.to_h.merge!(stats[:total].to_h)
163
163
 
164
- if resource.groups.any?
164
+ if metric.groups.any?
165
165
  group_stats = stats.reject { |name, _stat| name == :total }
166
- resource_hash['groups'] = group_stats.merge(group_stats) do |_name, stat|
166
+ metric_hash['groups'] = group_stats.merge(group_stats) do |_name, stat|
167
167
  stat.to_h
168
168
  end
169
169
  end
170
170
 
171
- resource_hash
171
+ metric_hash
172
172
  end
173
173
  end
174
174
  end
@@ -4,7 +4,7 @@ module Airbrake
4
4
  # Stat is a data structure that allows accumulating performance data (route
5
5
  # performance, SQL query performance and such). It's powered by TDigests.
6
6
  #
7
- # Usually, one Stat corresponds to one resource (route or query,
7
+ # Usually, one Stat corresponds to one metric (route or query,
8
8
  # etc.). Incrementing a stat means pushing new performance statistics.
9
9
  #
10
10
  # @example
@@ -6,10 +6,10 @@ module Airbrake
6
6
  module TimeTruncate
7
7
  # Truncate +time+ to floor minute and turn it into an RFC3339 timestamp.
8
8
  #
9
- # @param [Time] time
9
+ # @param [Time, Integer, Float] time
10
10
  # @return [String]
11
11
  def self.utc_truncate_minutes(time)
12
- tm = time.getutc
12
+ tm = Time.at(time).getutc
13
13
 
14
14
  Time.utc(tm.year, tm.month, tm.day, tm.hour, tm.min).to_datetime.rfc3339
15
15
  end
@@ -3,7 +3,7 @@
3
3
  module Airbrake
4
4
  # @return [String] the library version
5
5
  # @api public
6
- AIRBRAKE_RUBY_VERSION = '6.0.1'.freeze
6
+ AIRBRAKE_RUBY_VERSION = '6.1.1'.freeze
7
7
 
8
8
  # @return [Hash{Symbol=>String}] the information about the notifier library
9
9
  # @since v5.0.0
data/lib/airbrake-ruby.rb CHANGED
@@ -364,23 +364,14 @@ module Airbrake
364
364
  # method: 'POST',
365
365
  # route: '/thing/:id/create',
366
366
  # status_code: 200,
367
- # func: 'do_stuff',
368
- # file: 'app/models/foo.rb',
369
- # line: 452,
370
367
  # timing: 123.45 # ms
371
368
  # )
372
369
  #
373
370
  # @param [Hash{Symbol=>Object}] request_info
374
371
  # @option request_info [String] :method The HTTP method that was invoked
375
372
  # @option request_info [String] :route The route that was invoked
376
- # @option request_info [Integer] :status_code The respose code that the
373
+ # @option request_info [Integer] :status_code The response code that the
377
374
  # route returned
378
- # @option request_info [String] :func The function that called the query
379
- # (optional)
380
- # @option request_info [String] :file The file that has the function that
381
- # called the query (optional)
382
- # @option request_info [Integer] :line The line that executes the query
383
- # (optional)
384
375
  # @option request_info [Float] :timing How much time it took to process the
385
376
  # request (in ms)
386
377
  # @param [Hash] stash What needs to be appeneded to the stash, so it's
@@ -415,6 +406,9 @@ module Airbrake
415
406
  # method: 'GET',
416
407
  # route: '/things',
417
408
  # query: 'SELECT * FROM things',
409
+ # func: 'do_stuff',
410
+ # file: 'app/models/foo.rb',
411
+ # line: 452,
418
412
  # timing: 123.45 # ms
419
413
  # )
420
414
  #
@@ -424,6 +418,12 @@ module Airbrake
424
418
  # @option query_info [String] :route The route that triggered this SQL
425
419
  # query (optional)
426
420
  # @option query_info [String] :query The query that was executed
421
+ # @option request_info [String] :func The function that called the query
422
+ # (optional)
423
+ # @option request_info [String] :file The file that has the function that
424
+ # called the query (optional)
425
+ # @option request_info [Integer] :line The line that executes the query
426
+ # (optional)
427
427
  # @option query_info [Float] :timing How much time it took to process the
428
428
  # query (in ms)
429
429
  # @param [Hash] stash What needs to be appeneded to the stash, so it's
@@ -451,7 +451,7 @@ module Airbrake
451
451
  # Increments performance breakdown statistics of a certain route.
452
452
  #
453
453
  # @example
454
- # Airbrake.notify_request(
454
+ # Airbrake.notify_performance_breakdown(
455
455
  # method: 'POST',
456
456
  # route: '/thing/:id/create',
457
457
  # response_type: 'json',
@@ -523,24 +523,24 @@ module Airbrake
523
523
  performance_notifier.notify_sync(queue)
524
524
  end
525
525
 
526
- # Runs a callback before {.notify_request} or {.notify_query} kicks in. This
527
- # is useful if you want to ignore specific resources or filter the data the
528
- # resource contains.
526
+ # Runs a callback before {.notify_request}, {.notify_query}, {.notify_queue}
527
+ # or {.notify_performance_breakdown} kicks in. This is useful if you want to
528
+ # ignore specific metrics or filter the data the metric contains.
529
529
  #
530
- # @example Ignore all resources
530
+ # @example Ignore all metrics
531
531
  # Airbrake.add_performance_filter(&:ignore!)
532
532
  # @example Filter sensitive data
533
- # Airbrake.add_performance_filter do |resource|
534
- # case resource
533
+ # Airbrake.add_performance_filter do |metric|
534
+ # case metric
535
535
  # when Airbrake::Query
536
- # resource.route = '[Filtered]'
536
+ # metric.route = '[Filtered]'
537
537
  # when Airbrake::Request
538
- # resource.query = '[Filtered]'
538
+ # metric.query = '[Filtered]'
539
539
  # end
540
540
  # end
541
541
  # @example Filter with help of a class
542
542
  # class MyFilter
543
- # def call(resource)
543
+ # def call(metric)
544
544
  # # ...
545
545
  # end
546
546
  # end
@@ -548,7 +548,7 @@ module Airbrake
548
548
  # Airbrake.add_performance_filter(MyFilter.new)
549
549
  #
550
550
  # @param [#call] filter The filter object
551
- # @yield [resource] The resource to filter
551
+ # @yield [metric] The metric to filter
552
552
  # @yieldparam [Airbrake::Query, Airbrake::Request]
553
553
  # @yieldreturn [void]
554
554
  # @return [void]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.1
4
+ version: 6.1.1
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: 2021-10-07 00:00:00.000000000 Z
11
+ date: 2022-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbtree3
@@ -93,69 +93,11 @@ files:
93
93
  - lib/airbrake-ruby/timed_trace.rb
94
94
  - lib/airbrake-ruby/truncator.rb
95
95
  - lib/airbrake-ruby/version.rb
96
- - spec/airbrake_spec.rb
97
- - spec/async_sender_spec.rb
98
- - spec/backtrace_spec.rb
99
- - spec/benchmark_spec.rb
100
- - spec/code_hunk_spec.rb
101
- - spec/config/processor_spec.rb
102
- - spec/config/validator_spec.rb
103
- - spec/config_spec.rb
104
- - spec/context_spec.rb
105
- - spec/deploy_notifier_spec.rb
106
- - spec/file_cache_spec.rb
107
- - spec/filter_chain_spec.rb
108
- - spec/filters/context_filter_spec.rb
109
- - spec/filters/dependency_filter_spec.rb
110
- - spec/filters/exception_attributes_filter_spec.rb
111
- - spec/filters/gem_root_filter_spec.rb
112
- - spec/filters/git_last_checkout_filter_spec.rb
113
- - spec/filters/git_repository_filter.rb
114
- - spec/filters/git_revision_filter_spec.rb
115
- - spec/filters/keys_allowlist_spec.rb
116
- - spec/filters/keys_blocklist_spec.rb
117
- - spec/filters/root_directory_filter_spec.rb
118
- - spec/filters/sql_filter_spec.rb
119
- - spec/filters/system_exit_filter_spec.rb
120
- - spec/filters/thread_filter_spec.rb
121
- - spec/fixtures/notroot.txt
122
- - spec/fixtures/project_root/code.rb
123
- - spec/fixtures/project_root/empty_file.rb
124
- - spec/fixtures/project_root/long_line.txt
125
- - spec/fixtures/project_root/short_file.rb
126
- - spec/fixtures/project_root/vendor/bundle/ignored_file.rb
127
- - spec/helpers.rb
128
- - spec/ignorable_spec.rb
129
- - spec/inspectable_spec.rb
130
- - spec/loggable_spec.rb
131
- - spec/monotonic_time_spec.rb
132
- - spec/nested_exception_spec.rb
133
- - spec/notice_notifier/options_spec.rb
134
- - spec/notice_notifier_spec.rb
135
- - spec/notice_spec.rb
136
- - spec/performance_breakdown_spec.rb
137
- - spec/performance_notifier_spec.rb
138
- - spec/promise_spec.rb
139
- - spec/query_spec.rb
140
- - spec/queue_spec.rb
141
- - spec/remote_settings/callback_spec.rb
142
- - spec/remote_settings/settings_data_spec.rb
143
- - spec/remote_settings_spec.rb
144
- - spec/request_spec.rb
145
- - spec/response_spec.rb
146
- - spec/spec_helper.rb
147
- - spec/stashable_spec.rb
148
- - spec/stat_spec.rb
149
- - spec/sync_sender_spec.rb
150
- - spec/tdigest_spec.rb
151
- - spec/thread_pool_spec.rb
152
- - spec/time_truncate_spec.rb
153
- - spec/timed_trace_spec.rb
154
- - spec/truncator_spec.rb
155
96
  homepage: https://airbrake.io
156
97
  licenses:
157
98
  - MIT
158
- metadata: {}
99
+ metadata:
100
+ rubygems_mfa_required: 'true'
159
101
  post_install_message:
160
102
  rdoc_options: []
161
103
  require_paths:
@@ -171,67 +113,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
113
  - !ruby/object:Gem::Version
172
114
  version: '0'
173
115
  requirements: []
174
- rubygems_version: 3.2.15
116
+ rubygems_version: 3.1.6
175
117
  signing_key:
176
118
  specification_version: 4
177
119
  summary: Ruby notifier for https://airbrake.io
178
- test_files:
179
- - spec/airbrake_spec.rb
180
- - spec/async_sender_spec.rb
181
- - spec/backtrace_spec.rb
182
- - spec/benchmark_spec.rb
183
- - spec/code_hunk_spec.rb
184
- - spec/config/processor_spec.rb
185
- - spec/config/validator_spec.rb
186
- - spec/config_spec.rb
187
- - spec/context_spec.rb
188
- - spec/deploy_notifier_spec.rb
189
- - spec/file_cache_spec.rb
190
- - spec/filter_chain_spec.rb
191
- - spec/filters/context_filter_spec.rb
192
- - spec/filters/dependency_filter_spec.rb
193
- - spec/filters/exception_attributes_filter_spec.rb
194
- - spec/filters/gem_root_filter_spec.rb
195
- - spec/filters/git_last_checkout_filter_spec.rb
196
- - spec/filters/git_repository_filter.rb
197
- - spec/filters/git_revision_filter_spec.rb
198
- - spec/filters/keys_allowlist_spec.rb
199
- - spec/filters/keys_blocklist_spec.rb
200
- - spec/filters/root_directory_filter_spec.rb
201
- - spec/filters/sql_filter_spec.rb
202
- - spec/filters/system_exit_filter_spec.rb
203
- - spec/filters/thread_filter_spec.rb
204
- - spec/fixtures/notroot.txt
205
- - spec/fixtures/project_root/code.rb
206
- - spec/fixtures/project_root/empty_file.rb
207
- - spec/fixtures/project_root/long_line.txt
208
- - spec/fixtures/project_root/short_file.rb
209
- - spec/fixtures/project_root/vendor/bundle/ignored_file.rb
210
- - spec/helpers.rb
211
- - spec/ignorable_spec.rb
212
- - spec/inspectable_spec.rb
213
- - spec/loggable_spec.rb
214
- - spec/monotonic_time_spec.rb
215
- - spec/nested_exception_spec.rb
216
- - spec/notice_notifier/options_spec.rb
217
- - spec/notice_notifier_spec.rb
218
- - spec/notice_spec.rb
219
- - spec/performance_breakdown_spec.rb
220
- - spec/performance_notifier_spec.rb
221
- - spec/promise_spec.rb
222
- - spec/query_spec.rb
223
- - spec/queue_spec.rb
224
- - spec/remote_settings/callback_spec.rb
225
- - spec/remote_settings/settings_data_spec.rb
226
- - spec/remote_settings_spec.rb
227
- - spec/request_spec.rb
228
- - spec/response_spec.rb
229
- - spec/spec_helper.rb
230
- - spec/stashable_spec.rb
231
- - spec/stat_spec.rb
232
- - spec/sync_sender_spec.rb
233
- - spec/tdigest_spec.rb
234
- - spec/thread_pool_spec.rb
235
- - spec/time_truncate_spec.rb
236
- - spec/timed_trace_spec.rb
237
- - spec/truncator_spec.rb
120
+ test_files: []