airbrake 11.0.3 → 12.0.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: bd22c4ba5f388c063021267c805f9f72f9905c8e0f7a2b7e19d0f6a45c9718a9
4
- data.tar.gz: b919ee2bdae1a073c939b752d9827f3d8ecd6c30f18739019f9becbf6974a605
3
+ metadata.gz: c85c0e09edeb08efee5cabc43e11d56a02fb9cacbb2c0e415b81d0effa3f27b1
4
+ data.tar.gz: e6c403b7219e58f8e296f9a2dddc510a6749b651e52569b995db6ff8b5e71b86
5
5
  SHA512:
6
- metadata.gz: 2362a03c41aebeddaf2e6bcd2272760ea0fb94b88a0dcabb644ab5c9b3a72ed72281f05f314f04491e27d99fae9c5353bbfaa4fc1d43f09d3e2316f6edfb02ba
7
- data.tar.gz: f260895a27e6f8e2368c2be1431344291d5dcdf731f0d4b71d4ab2f14de1265cb93759c888ad03592b02dabaa7944e9c4dfbfed4fb87b443e3aaddeba0321760
6
+ metadata.gz: be4e1cffdf8560bc786970f5db60fd6a85961a55ea7d5f1c87533ef338d30a0f462909879977b91e3d921f4ed4b3b616ca0fcdbcc4d18c0c5ccb01841b00be5d
7
+ data.tar.gz: 28c44be64dd701b8afbf286b3dbced4756b6132b807ffc00e8a89c269d91b5e6b268a5e983e87b50fc00a524bc8a71f8e6a5da15bd7d385ce0a0f9d6d141b623
@@ -7,41 +7,39 @@ module Delayed
7
7
  class Airbrake < ::Delayed::Plugin
8
8
  callbacks do |lifecycle|
9
9
  lifecycle.around(:invoke_job) do |job, *args, &block|
10
- begin
11
- timing = ::Airbrake::Benchmark.measure do
12
- # Forward the call to the next callback in the callback chain
13
- block.call(job, *args)
14
- end
15
- rescue Exception => exception # rubocop:disable Lint/RescueException
16
- params = job.as_json
10
+ timing = ::Airbrake::Benchmark.measure do
11
+ # Forward the call to the next callback in the callback chain
12
+ block.call(job, *args)
13
+ end
14
+ rescue Exception => exception # rubocop:disable Lint/RescueException
15
+ params = job.as_json
17
16
 
18
- # If DelayedJob is used through ActiveJob, it contains extra info.
19
- if job.payload_object.respond_to?(:job_data)
20
- params[:active_job] = job.payload_object.job_data
21
- job_class = job.payload_object.job_data['job_class']
22
- end
17
+ # If DelayedJob is used through ActiveJob, it contains extra info.
18
+ if job.payload_object.respond_to?(:job_data)
19
+ params[:active_job] = job.payload_object.job_data
20
+ job_class = job.payload_object.job_data['job_class']
21
+ end
23
22
 
24
- action = job_class || job.payload_object.class.name
23
+ action = job_class || job.payload_object.class.name
25
24
 
26
- ::Airbrake.notify(exception, params) do |notice|
27
- notice[:context][:component] = 'delayed_job'
28
- notice[:context][:action] = action
29
- end
25
+ ::Airbrake.notify(exception, params) do |notice|
26
+ notice[:context][:component] = 'delayed_job'
27
+ notice[:context][:action] = action
28
+ end
30
29
 
31
- ::Airbrake.notify_queue(
32
- queue: action,
33
- error_count: 1,
34
- timing: 0.01,
35
- )
30
+ ::Airbrake.notify_queue(
31
+ queue: action,
32
+ error_count: 1,
33
+ timing: 0.01,
34
+ )
36
35
 
37
- raise exception
38
- else
39
- ::Airbrake.notify_queue(
40
- queue: job_class || job.payload_object.class.name,
41
- error_count: 0,
42
- timing: timing,
43
- )
44
- end
36
+ raise exception
37
+ else
38
+ ::Airbrake.notify_queue(
39
+ queue: job_class || job.payload_object.class.name,
40
+ error_count: 0,
41
+ timing: timing,
42
+ )
45
43
  end
46
44
  end
47
45
  end
@@ -9,7 +9,7 @@ module Airbrake
9
9
  #
10
10
  # @example
11
11
  # # Create a logger like you normally do and decorate it.
12
- # logger = Airbrake::AirbrakeLogger.new(Logger.new(STDOUT))
12
+ # logger = Airbrake::AirbrakeLogger.new(Logger.new($stdout))
13
13
  #
14
14
  # # Just use the logger like you normally do.
15
15
  # logger.fatal('oops')
@@ -24,6 +24,8 @@ module Airbrake
24
24
  attr_reader :airbrake_level
25
25
 
26
26
  def initialize(logger)
27
+ super
28
+
27
29
  __setobj__(logger)
28
30
  @airbrake_notifier = Airbrake
29
31
  self.level = logger.level
@@ -20,14 +20,9 @@ module Airbrake
20
20
  context = notice[:context]
21
21
 
22
22
  context[:url] = request.url
23
- context[:userAddr] =
24
- if request.respond_to?(:remote_ip)
25
- request.remote_ip
26
- else
27
- request.ip
28
- end
29
23
  context[:userAgent] = request.user_agent
30
24
 
25
+ add_ip(context, request)
31
26
  add_framework_version(context)
32
27
 
33
28
  controller = request.env['action_controller.instance']
@@ -60,6 +55,15 @@ module Airbrake
60
55
  }
61
56
  end
62
57
  end
58
+
59
+ def add_ip(context, request)
60
+ context[:userAddr] =
61
+ if request.respond_to?(:remote_ip)
62
+ request.remote_ip
63
+ else
64
+ request.ip
65
+ end
66
+ end
63
67
  end
64
68
  end
65
69
  end
@@ -57,6 +57,7 @@ module Airbrake
57
57
  klass.module_exec do
58
58
  mod = __airbrake_capture_timing_module__
59
59
  mod.module_exec do
60
+ # rubocop:disable Style/DocumentDynamicEvalDefinition
60
61
  module_eval <<-RUBY, __FILE__, __LINE__ + 1
61
62
  def #{method_name}(#{args})
62
63
  Airbrake::Rack.capture_timing(#{label.to_s.inspect}) do
@@ -65,6 +66,7 @@ module Airbrake
65
66
  end
66
67
  #{visibility} :#{method_name}
67
68
  RUBY
69
+ # rubocop:enable Style/DocumentDynamicEvalDefinition
68
70
  end
69
71
  prepend mod
70
72
  end
@@ -83,6 +85,7 @@ module Airbrake
83
85
  klass.module_exec do
84
86
  alias_method wrapped_method_name, method_name
85
87
  remove_method method_name if needs_removal
88
+ # rubocop:disable Style/DocumentDynamicEvalDefinition
86
89
  module_eval <<-RUBY, __FILE__, __LINE__ + 1
87
90
  def #{method_name}(#{args})
88
91
  Airbrake::Rack.capture_timing(#{label.to_s.inspect}) do
@@ -91,6 +94,7 @@ module Airbrake
91
94
  end
92
95
  #{visibility} :#{method_name}
93
96
  RUBY
97
+ # rubocop:enable Style/DocumentDynamicEvalDefinition
94
98
  end
95
99
  end
96
100
 
@@ -35,7 +35,7 @@ module Airbrake
35
35
  def sinatra_route(request)
36
36
  return unless (route = request.env['sinatra.route'])
37
37
 
38
- route.split(' ').drop(1).join(' ')
38
+ route.split.drop(1).join(' ')
39
39
  end
40
40
 
41
41
  def action_dispatch_request?(request)
@@ -11,7 +11,7 @@ module Airbrake
11
11
  level = (::Rails.logger ? ::Rails.logger.level : Logger::ERROR)
12
12
 
13
13
  if ENV['RAILS_LOG_TO_STDOUT'].present?
14
- Logger.new(STDOUT, level: level)
14
+ Logger.new($stdout, level: level)
15
15
  else
16
16
  Logger.new(::Rails.root.join('log', 'airbrake.log'), level: level)
17
17
  end
@@ -5,10 +5,8 @@ module Airbrake
5
5
  # Provides integration with Shoryuken.
6
6
  class ErrorHandler
7
7
  # rubocop:disable Lint/RescueException
8
- def call(worker, queue, _sqs_msg, body)
9
- timing = Airbrake::Benchmark.measure do
10
- yield
11
- end
8
+ def call(worker, queue, _sqs_msg, body, &block)
9
+ timing = Airbrake::Benchmark.measure(&block)
12
10
  rescue Exception => exception
13
11
  notify_airbrake(exception, worker, queue, body)
14
12
  Airbrake.notify_queue(
@@ -6,10 +6,8 @@ module Airbrake
6
6
  module Sidekiq
7
7
  # Provides integration with Sidekiq v2+.
8
8
  class ErrorHandler
9
- def call(_worker, context, _queue)
10
- timing = Airbrake::Benchmark.measure do
11
- yield
12
- end
9
+ def call(_worker, context, _queue, &block)
10
+ timing = Airbrake::Benchmark.measure(&block)
13
11
  rescue Exception => exception # rubocop:disable Lint/RescueException
14
12
  notify_airbrake(exception, context)
15
13
  Airbrake.notify_queue(
@@ -38,7 +36,7 @@ module Airbrake
38
36
  # @return [String] job's name. When ActiveJob is present, retrieve
39
37
  # job_class. When used directly, use worker's name
40
38
  def action(context)
41
- klass = context['class'] || context[:job] && context[:job]['class']
39
+ klass = context['class'] || (context[:job] && context[:job]['class'])
42
40
  return klass unless context[:job] && context[:job]['args'].first.is_a?(Hash)
43
41
  return klass unless (job_class = context[:job]['args'].first['job_class'])
44
42
 
@@ -48,24 +48,22 @@ module Airbrake
48
48
  define_method(
49
49
  ::Sneakers::Worker.method_defined?(:process_work) ? :process_work : :do_work,
50
50
  ) do |delivery_info, metadata, msg, handler|
51
- begin
52
- timing = Airbrake::Benchmark.measure do
53
- super(delivery_info, metadata, msg, handler)
54
- end
55
- rescue Exception => exception # rubocop:disable Lint/RescueException
56
- Airbrake.notify_queue(
57
- queue: self.class.to_s,
58
- error_count: 1,
59
- timing: 0.01,
60
- )
61
- raise exception
62
- else
63
- Airbrake.notify_queue(
64
- queue: self.class.to_s,
65
- error_count: 0,
66
- timing: timing,
67
- )
51
+ timing = Airbrake::Benchmark.measure do
52
+ super(delivery_info, metadata, msg, handler)
68
53
  end
54
+ rescue Exception => exception # rubocop:disable Lint/RescueException
55
+ Airbrake.notify_queue(
56
+ queue: self.class.to_s,
57
+ error_count: 1,
58
+ timing: 0.01,
59
+ )
60
+ raise exception
61
+ else
62
+ Airbrake.notify_queue(
63
+ queue: self.class.to_s,
64
+ error_count: 0,
65
+ timing: timing,
66
+ )
69
67
  end
70
68
  end
71
69
  end
@@ -3,5 +3,5 @@
3
3
  # We use Semantic Versioning v2.0.0
4
4
  # More information: http://semver.org/
5
5
  module Airbrake
6
- AIRBRAKE_VERSION = '11.0.3'
6
+ AIRBRAKE_VERSION = '12.0.0'
7
7
  end
@@ -3,22 +3,19 @@
3
3
  # Creates the Airbrake initializer file for Rails apps.
4
4
  #
5
5
  # @example Invokation from terminal
6
- # rails generate airbrake PROJECT_KEY PROJECT_ID [NAME]
6
+ # rails generate airbrake [NAME]
7
7
  #
8
8
  class AirbrakeGenerator < Rails::Generators::Base
9
9
  # Adds current directory to source paths, so we can find the template file.
10
10
  source_root File.expand_path(__dir__)
11
11
 
12
- argument :project_id, required: false
13
- argument :project_key, required: false
14
-
15
12
  # Makes the NAME option optional, which allows to subclass from Base, so we
16
13
  # can pass arguments to the ERB template.
17
14
  #
18
- # @see http://asciicasts.com/episodes/218-making-generators-in-rails-3
15
+ # @see https://asciicasts.com/episodes/218-making-generators-in-rails-3.html
19
16
  argument :name, type: :string, default: 'application'
20
17
 
21
- desc 'Configures the Airbrake notifier with your project id and project key'
18
+ desc 'Configures the Airbrake notifier'
22
19
  def generate_layout
23
20
  template 'airbrake_initializer.rb.erb', 'config/initializers/airbrake.rb'
24
21
  end
@@ -1,80 +1,80 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Airbrake is an online tool that provides robust exception tracking in your Rails
4
- # applications. In doing so, it allows you to easily review errors, tie an error
5
- # to an individual piece of code, and trace the cause back to recent
6
- # changes. Airbrake enables for easy categorization, searching, and prioritization
7
- # of exceptions so that when errors occur, your team can quickly determine the
8
- # root cause.
3
+ # Airbrake is an online tool that provides robust exception tracking in your
4
+ # Rails applications. In doing so, it allows you to easily review errors, tie an
5
+ # error to an individual piece of code, and trace the cause back to recent
6
+ # changes. Airbrake enables for easy categorization, searching, and
7
+ # prioritization of exceptions so that when errors occur, your team can quickly
8
+ # determine the root cause.
9
9
  #
10
10
  # Configuration details:
11
11
  # https://github.com/airbrake/airbrake-ruby#configuration
12
- Airbrake.configure do |c|
13
- # You must set both project_id & project_key. To find your project_id and
14
- # project_key navigate to your project's General Settings and copy the values
15
- # from the right sidebar.
16
- # https://github.com/airbrake/airbrake-ruby#project_id--project_key
17
- <% if project_id -%>
18
- c.project_id = <%= project_id %>
19
- <% else -%>
20
- c.project_id = ENV['AIRBRAKE_PROJECT_ID']
21
- <% end -%>
22
- <% if project_key -%>
23
- c.project_key = '<%= project_key %>'
24
- <% else -%>
25
- c.project_key = ENV['AIRBRAKE_API_KEY']
26
- <% end -%>
12
+ if (project_id = ENV['AIRBRAKE_PROJECT_ID']) &&
13
+ project_key = (ENV['AIRBRAKE_PROJECT_KEY'] || ENV['AIRBRAKE_API_KEY'])
14
+ Airbrake.configure do |c|
15
+ # You must set both project_id & project_key. To find your project_id and
16
+ # project_key navigate to your project's General Settings and copy the
17
+ # values from the right sidebar.
18
+ # https://github.com/airbrake/airbrake-ruby#project_id--project_key
19
+ c.project_id = project_id
20
+ c.project_key = project_key
27
21
 
28
- # Configures the root directory of your project. Expects a String or a
29
- # Pathname, which represents the path to your project. Providing this option
30
- # helps us to filter out repetitive data from backtrace frames and link to
31
- # GitHub files from our dashboard.
32
- # https://github.com/airbrake/airbrake-ruby#root_directory
33
- c.root_directory = Rails.root
22
+ # Configures the root directory of your project. Expects a String or a
23
+ # Pathname, which represents the path to your project. Providing this option
24
+ # helps us to filter out repetitive data from backtrace frames and link to
25
+ # GitHub files from our dashboard.
26
+ # https://github.com/airbrake/airbrake-ruby#root_directory
27
+ c.root_directory = Rails.root
34
28
 
35
- # By default, Airbrake Ruby outputs to STDOUT. In Rails apps it makes sense to
36
- # use the Rails' logger.
37
- # https://github.com/airbrake/airbrake-ruby#logger
38
- c.logger = Airbrake::Rails.logger
29
+ # By default, Airbrake Ruby outputs to STDOUT. In Rails apps it makes sense
30
+ # to use the Rails' logger.
31
+ # https://github.com/airbrake/airbrake-ruby#logger
32
+ c.logger = Airbrake::Rails.logger
39
33
 
40
- # Configures the environment the application is running in. Helps the Airbrake
41
- # dashboard to distinguish between exceptions occurring in different
42
- # environments.
43
- # NOTE: This option must be set in order to make the 'ignore_environments'
44
- # option work.
45
- # https://github.com/airbrake/airbrake-ruby#environment
46
- c.environment = Rails.env
34
+ # Configures the environment the application is running in. Helps the
35
+ # Airbrake dashboard to distinguish between exceptions occurring in
36
+ # different environments.
37
+ # NOTE: This option must be set in order to make the 'ignore_environments'
38
+ # option work.
39
+ # https://github.com/airbrake/airbrake-ruby#environment
40
+ c.environment = Rails.env
47
41
 
48
- # Setting this option allows Airbrake to filter exceptions occurring in
49
- # unwanted environments such as :test.
50
- # NOTE: This option *does not* work if you don't set the 'environment' option.
51
- # https://github.com/airbrake/airbrake-ruby#ignore_environments
52
- c.ignore_environments = %w[test]
42
+ # Setting this option allows Airbrake to filter exceptions occurring in
43
+ # unwanted environments such as :test. NOTE: This option *does not* work if
44
+ # you don't set the 'environment' option.
45
+ # https://github.com/airbrake/airbrake-ruby#ignore_environments
46
+ c.ignore_environments = %w[test]
53
47
 
54
- # A list of parameters that should be filtered out of what is sent to
55
- # Airbrake. By default, all "password" attributes will have their contents
56
- # replaced.
57
- # https://github.com/airbrake/airbrake-ruby#blocklist_keys
58
- c.blocklist_keys = [/password/i, /authorization/i]
48
+ # A list of parameters that should be filtered out of what is sent to
49
+ # Airbrake. By default, all "password" attributes will have their contents
50
+ # replaced.
51
+ # https://github.com/airbrake/airbrake-ruby#blocklist_keys
52
+ c.blocklist_keys = [/password/i, /authorization/i]
59
53
 
60
- # Alternatively, you can integrate with Rails' filter_parameters.
61
- # Read more: https://goo.gl/gqQ1xS
62
- # c.blocklist_keys = Rails.application.config.filter_parameters
63
- end
54
+ # Alternatively, you can integrate with Rails' filter_parameters.
55
+ # Read more: https://goo.gl/gqQ1xS
56
+ # c.blocklist_keys = Rails.application.config.filter_parameters
57
+ end
64
58
 
65
- # A filter that collects request body information. Enable it if you are sure you
66
- # don't send sensitive information to Airbrake in your body (such as passwords).
67
- # https://github.com/airbrake/airbrake#requestbodyfilter
68
- # Airbrake.add_filter(Airbrake::Rack::RequestBodyFilter.new)
59
+ # A filter that collects request body information. Enable it if you are sure you
60
+ # don't send sensitive information to Airbrake in your body (such as passwords).
61
+ # https://github.com/airbrake/airbrake#requestbodyfilter
62
+ # Airbrake.add_filter(Airbrake::Rack::RequestBodyFilter.new)
69
63
 
70
- # Attaches thread & fiber local variables along with general thread information.
71
- # Airbrake.add_filter(Airbrake::Filters::ThreadFilter.new)
64
+ # Attaches thread & fiber local variables along with general thread information.
65
+ # Airbrake.add_filter(Airbrake::Filters::ThreadFilter.new)
72
66
 
73
- # Attaches loaded dependencies to the notice object
74
- # (under context/versions/dependencies).
75
- # Airbrake.add_filter(Airbrake::Filters::DependencyFilter.new)
67
+ # Attaches loaded dependencies to the notice object
68
+ # (under context/versions/dependencies).
69
+ # Airbrake.add_filter(Airbrake::Filters::DependencyFilter.new)
76
70
 
77
- # If you want to convert your log messages to Airbrake errors, we offer an
78
- # integration with the Logger class from stdlib.
79
- # https://github.com/airbrake/airbrake#logger
80
- # Rails.logger = Airbrake::AirbrakeLogger.new(Rails.logger)
71
+ # If you want to convert your log messages to Airbrake errors, we offer an
72
+ # integration with the Logger class from stdlib.
73
+ # https://github.com/airbrake/airbrake#logger
74
+ # Rails.logger = Airbrake::AirbrakeLogger.new(Rails.logger)
75
+ else
76
+ Rails.logger.warn(
77
+ "#{__FILE__}: Airbrake project id or project key is not set. " \
78
+ "Skipping Airbrake configuration"
79
+ )
80
+ end
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: 11.0.3
4
+ version: 12.0.0
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-05-13 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: airbrake-ruby
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.1'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.1'
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -137,33 +137,19 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: sneakers
140
+ name: rack-test
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '2'
145
+ version: '1.1'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '2'
153
- - !ruby/object:Gem::Dependency
154
- name: rack-test
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - '='
158
- - !ruby/object:Gem::Version
159
- version: 0.6.3
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - '='
165
- - !ruby/object:Gem::Version
166
- version: 0.6.3
152
+ version: '1.1'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: redis
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +170,14 @@ dependencies:
184
170
  requirements:
185
171
  - - "~>"
186
172
  - !ruby/object:Gem::Version
187
- version: '5'
173
+ version: '6'
188
174
  type: :development
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
178
  - - "~>"
193
179
  - !ruby/object:Gem::Version
194
- version: '5'
180
+ version: '6'
195
181
  - !ruby/object:Gem::Dependency
196
182
  name: curb
197
183
  requirement: !ruby/object:Gem::Requirement
@@ -226,14 +212,14 @@ dependencies:
226
212
  requirements:
227
213
  - - "~>"
228
214
  - !ruby/object:Gem::Version
229
- version: '2.2'
215
+ version: '5.0'
230
216
  type: :development
231
217
  prerelease: false
232
218
  version_requirements: !ruby/object:Gem::Requirement
233
219
  requirements:
234
220
  - - "~>"
235
221
  - !ruby/object:Gem::Version
236
- version: '2.2'
222
+ version: '5.0'
237
223
  - !ruby/object:Gem::Dependency
238
224
  name: httpclient
239
225
  requirement: !ruby/object:Gem::Requirement
@@ -262,20 +248,6 @@ dependencies:
262
248
  - - "~>"
263
249
  - !ruby/object:Gem::Version
264
250
  version: '1.3'
265
- - !ruby/object:Gem::Dependency
266
- name: ethon
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - '='
270
- - !ruby/object:Gem::Version
271
- version: 0.12.0
272
- type: :development
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - '='
277
- - !ruby/object:Gem::Version
278
- version: 0.12.0
279
251
  - !ruby/object:Gem::Dependency
280
252
  name: public_suffix
281
253
  requirement: !ruby/object:Gem::Requirement
@@ -300,16 +272,16 @@ dependencies:
300
272
  name: redis-namespace
301
273
  requirement: !ruby/object:Gem::Requirement
302
274
  requirements:
303
- - - '='
275
+ - - "~>"
304
276
  - !ruby/object:Gem::Version
305
- version: 1.6.0
277
+ version: '1.8'
306
278
  type: :development
307
279
  prerelease: false
308
280
  version_requirements: !ruby/object:Gem::Requirement
309
281
  requirements:
310
- - - '='
282
+ - - "~>"
311
283
  - !ruby/object:Gem::Version
312
- version: 1.6.0
284
+ version: '1.8'
313
285
  description: |
314
286
  Airbrake is an online tool that provides robust exception tracking in any of
315
287
  your Ruby applications. In doing so, it allows you to easily review errors, tie
@@ -386,14 +358,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
386
358
  requirements:
387
359
  - - ">="
388
360
  - !ruby/object:Gem::Version
389
- version: '2.3'
361
+ version: '2.5'
390
362
  required_rubygems_version: !ruby/object:Gem::Requirement
391
363
  requirements:
392
364
  - - ">="
393
365
  - !ruby/object:Gem::Version
394
366
  version: '0'
395
367
  requirements: []
396
- rubygems_version: 3.1.2
368
+ rubygems_version: 3.1.4
397
369
  signing_key:
398
370
  specification_version: 4
399
371
  summary: Airbrake is an online tool that provides robust exception tracking in any