honeybadger 4.7.2 → 5.0.2

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: ae86ea681a8b1e58775976adc5fe1300cfa043865c9a72344b5ae2dfcde2565a
4
- data.tar.gz: 98a92af83ec77fff0fba12fd551ca81417ed04d0cfdba225a262f1db2786ad82
3
+ metadata.gz: 807947f2bfdd4fac0c50e1665b0538eb42e5811f30903b7f9e6e19cacc5e999b
4
+ data.tar.gz: 1e3b8f5e462963083a41e336378d2e8a25a6efadf70e5216992be5e2517f814c
5
5
  SHA512:
6
- metadata.gz: bad75cfca393708ec07292b6e34257afdaad23753e7fe26b96e8c9d1ca5d46099f9da13b93b53d49d5a77569913e0048a883cc6bf73b04686d85060805e8d681
7
- data.tar.gz: 79e8f88c82d3e8da1eb968b4f9df0ba88da145a034cd6c82cd7e3bf84649d9d5d3c7e3586ce12e391b3f097c9a955231654a825726ac9a697050ffdbca2df64d
6
+ metadata.gz: 0dad8d9da2e9a648796ad3cedc58fadc7f5c1144e4b0985556f7dbba92348ee36b08073fb8d67a0b1ff2920c12b853b8b937b80f1f351fd172348fd3119f9dc0
7
+ data.tar.gz: f5c7cc958c542c60a85abe624e6625fe30e449e6d3bef6760f05a8218134ea92b74b6c982460739d828069aa17e21cb6303adb5e6568699543099587c406fb9c
data/CHANGELOG.md CHANGED
@@ -5,6 +5,82 @@ adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [5.0.2] - 2022-11-04
9
+ ### Fixed
10
+ - `Honeybadger.check_in` would raise an exception when used with the test backend (#449)
11
+
12
+ ## [5.0.1] - 2022-10-27
13
+ ### Fixed
14
+ - Ignore `Sidekiq::JobRetry` skip exception. Since support was added for Rails 7
15
+ error reporting interface these exceptions are being reported in addition to
16
+ the exception that caused the job to be retried. Mike Perham says these
17
+ exceptions can safely be ignored.
18
+ See https://github.com/rails/rails/pull/43625#issuecomment-1071574110
19
+
20
+ ## [5.0.0] - 2022-10-18
21
+ ### Changed
22
+ - `Honeybadger.notify` is now idempotent; it will skip reporting exception
23
+ objects that have already been reported before, and simply return the existing
24
+ notice ID.
25
+ - Honeybadger is now initialized before Rails' initializers, allowing you to
26
+ report errors raised during startup. Config added via `Honeybadger.configure`
27
+ is added later in the Rails initialization process.
28
+
29
+ ### Added
30
+ - Support Rails 7 error reporting interface (#443)
31
+
32
+ ### Fixed
33
+ - Replace deployhook with release webhook (#444)
34
+ See https://blog.heroku.com/deployhooks-sunset
35
+
36
+ ## [4.12.2] - 2022-08-15
37
+ ### Fixed
38
+ - Fix a bug where the auto-detected revision is blank instead of nil
39
+ - Fix inadvertent creation of invalid sessions (#441)
40
+
41
+ ## [4.12.1] - 2022-04-01
42
+ ### Fixed
43
+ - Fix Lambda plugin: support Ruby <2.5 (#428)
44
+
45
+ ## [4.12.0] - 2022-03-30
46
+ ### Added
47
+ - Added `hb_wrap_handler` to automatically capture AWS Lambda handler errors
48
+
49
+ ### Fixed
50
+ - Change `:exception_message` key name to just `:exception` for error breadcrumb metadata.
51
+
52
+ ## [4.11.0] - 2022-02-15
53
+ ### Fixed
54
+ - Allow special characters in tags. Also support space-delimited tags:
55
+ "one two three" and "one, two, three" are equivalent
56
+
57
+ ## [4.10.0] - 2022-01-19
58
+ ### Added
59
+ - Add more items to the default config file
60
+
61
+ ### Fixed
62
+ - Fix a Ruby 3.1 bug that breaks regexp classes in honeybadger.yml (#418)
63
+
64
+ ## [4.9.0] - 2021-06-28
65
+ ### Fixed
66
+ - Replaced fixed number for retries in Sidekiq Plugin with Sidekiq::JobRetry constant
67
+ - Properly set environment in deployment tracking (#404, @stmllr)
68
+
69
+ ### Added
70
+ - Added 'ActionDispatch::Http::MimeNegotiation::InvalidType' (Rails 6.1) to
71
+ default ignore list. (#402, @jrochkind)
72
+
73
+ ## [4.8.0] - 2021-03-16
74
+ ### Fixed
75
+ - Suppress any error output from the `git rev-parse` command. ([#394](https://github.com/honeybadger-io/honeybadger-ruby/pull/394))
76
+
77
+ ### Added
78
+ - Support deployment tracking in code (#397, @danleyden)
79
+
80
+ ## [4.7.3] - 2021-02-10
81
+ ### Fixed
82
+ - Don't enable Lambda plugin in non-Lambda execution environments
83
+
8
84
  ## [4.7.2] - 2020-08-17
9
85
  ### Fixed
10
86
  - Remove usage of `ActiveRecord::Base.connection` (thanks @jcoyne for testing)
@@ -32,7 +108,7 @@ adheres to [Semantic Versioning](http://semver.org/).
32
108
  ### Fixed
33
109
  - Fixed issue where Sidekiq.attempt_threshold was triggering 2 attempts ahead
34
110
  of the setting
35
- - Dup notify opts before mutating (#345)
111
+ - Dupe notify opts before mutating (#345)
36
112
 
37
113
  ### Changed
38
114
  - Breadcrumbs on by default
data/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  ![Ruby](https://github.com/honeybadger-io/honeybadger-ruby/workflows/Ruby/badge.svg)
4
4
  ![JRuby](https://github.com/honeybadger-io/honeybadger-ruby/workflows/JRuby/badge.svg)
5
5
  [![Gem Version](https://badge.fury.io/rb/honeybadger.svg)](http://badge.fury.io/rb/honeybadger)
6
- [![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=honeybadger&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=honeybadger&package-manager=bundler&version-scheme=semver)
7
6
 
8
7
  This is the notifier gem for integrating apps with the :zap: [Honeybadger Exception Notifier for Ruby and Rails](http://honeybadger.io).
9
8
 
@@ -122,6 +122,9 @@ module Honeybadger
122
122
  opts = opts.dup
123
123
 
124
124
  if exception_or_opts.is_a?(Exception)
125
+ already_reported_notice_id = exception_or_opts.instance_variable_get(:@__hb_notice_id)
126
+ return already_reported_notice_id if already_reported_notice_id
127
+
125
128
  opts[:exception] = exception_or_opts
126
129
  elsif exception_or_opts.respond_to?(:to_hash)
127
130
  opts.merge!(exception_or_opts.to_hash)
@@ -171,6 +174,10 @@ module Honeybadger
171
174
  push(notice)
172
175
  end
173
176
 
177
+ if exception_or_opts.is_a?(Exception)
178
+ exception_or_opts.instance_variable_set(:@__hb_notice_id, notice.id) unless exception_or_opts.frozen?
179
+ end
180
+
174
181
  notice.id
175
182
  end
176
183
 
@@ -190,6 +197,29 @@ module Honeybadger
190
197
  response.success?
191
198
  end
192
199
 
200
+ # Track a new deployment
201
+ #
202
+ # @example
203
+ # Honeybadger.track_deployment(revision: 'be2ceb6')
204
+ #
205
+ # @param [String] :environment The environment name. Defaults to the current configured environment.
206
+ # @param [String] :revision The VCS revision being deployed. Defaults to the currently configured revision.
207
+ # @param [String] :local_username The name of the user who performed the deploy.
208
+ # @param [String] :repository The base URL of the VCS repository. It should be HTTPS-style.
209
+ #
210
+ # @return [Boolean] true if the deployment was successfully tracked and false
211
+ # otherwise.
212
+ def track_deployment(environment: nil, revision: nil, local_username: nil, repository: nil)
213
+ opts = {
214
+ environment: environment || config[:env],
215
+ revision: revision || config[:revision],
216
+ local_username: local_username,
217
+ repository: repository
218
+ }
219
+ response = backend.track_deployment(opts)
220
+ response.success?
221
+ end
222
+
193
223
  # Save global context for the current request.
194
224
  #
195
225
  # @example
@@ -99,6 +99,15 @@ module Honeybadger
99
99
  raise NotImplementedError, 'must define #check_in on subclass.'
100
100
  end
101
101
 
102
+ # Track a deployment
103
+ # @example
104
+ # backend.track_deployment({ revision: 'be2ceb6' })
105
+ #
106
+ # @param [#to_json] payload The JSON payload containing all deployment data.
107
+ def track_deployment(payload)
108
+ notify(:deploys, payload)
109
+ end
110
+
102
111
  private
103
112
 
104
113
  attr_reader :config
@@ -39,6 +39,7 @@ module Honeybadger
39
39
 
40
40
  def check_in(id)
41
41
  check_ins << id
42
+ super
42
43
  end
43
44
  end
44
45
  end
@@ -23,7 +23,7 @@ module Honeybadger
23
23
  exit(1)
24
24
  end
25
25
 
26
- cmd = %Q(heroku addons:create deployhooks:http --url="https://api.honeybadger.io/v1/deploys?deploy[environment]=#{rails_env}&deploy[local_username]={{user}}&deploy[revision]={{head}}&api_key=#{api_key}"#{app ? " --app #{app}" : ''})
26
+ cmd = %Q(heroku webhooks:add -i api:release -l notify -u "https://api.honeybadger.io/v1/deploys/heroku?environment=#{rails_env}&api_key=#{api_key}"#{app ? " --app #{app}" : ''})
27
27
 
28
28
  say("Running: `#{cmd}`")
29
29
  say(run(cmd))
@@ -93,7 +93,7 @@ module Honeybadger
93
93
  end
94
94
 
95
95
  def run(cmd)
96
- Bundler.with_clean_env { `#{cmd}` }
96
+ Bundler.with_unbundled_env { `#{cmd}` }
97
97
  end
98
98
 
99
99
  def heroku_var(var, app_name, default = nil)
@@ -43,10 +43,36 @@ module Honeybadger
43
43
  exit(1)
44
44
  end
45
45
 
46
+ default_env = defined?(::Rails.application) ? "Rails.env" : "ENV['RUBY_ENV'] || ENV['RACK_ENV']"
47
+ default_root = defined?(::Rails.application) ? "Rails.root.to_s" : "Dir.pwd"
46
48
  File.open(path, 'w+') do |file|
47
49
  file.write(<<-CONFIG)
48
50
  ---
51
+ # For more options, see https://docs.honeybadger.io/lib/ruby/gem-reference/configuration
52
+
49
53
  api_key: '#{api_key}'
54
+
55
+ # The environment your app is running in.
56
+ env: "<%= #{default_env} %>"
57
+
58
+ # The absolute path to your project folder.
59
+ root: "<%= #{default_root} %>"
60
+
61
+ # Honeybadger won't report errors in these environments.
62
+ development_environments:
63
+ - test
64
+ - development
65
+ - cucumber
66
+
67
+ # By default, Honeybadger won't report errors in the development_environments.
68
+ # You can override this by explicitly setting report_data to true or false.
69
+ # report_data: true
70
+
71
+ # The current Git revision of your project. Defaults to the last commit hash.
72
+ # revision: null
73
+
74
+ # Enable verbose debug logging (useful for troubleshooting).
75
+ debug: false
50
76
  CONFIG
51
77
  end
52
78
  end
@@ -256,7 +256,7 @@ love: making developers awesome.
256
256
  Happy 'badgering!
257
257
 
258
258
  Sincerely,
259
- Ben, Josh and Starr
259
+ The Honeybadger Crew
260
260
  https://www.honeybadger.io/about/
261
261
 
262
262
  ⚡ --- End --------------------------------------------------------------------
@@ -23,11 +23,13 @@ module Honeybadger
23
23
  'ActionController::ParameterMissing',
24
24
  'ActiveRecord::RecordNotFound',
25
25
  'ActionController::UnknownAction',
26
+ 'ActionDispatch::Http::MimeNegotiation::InvalidType',
26
27
  'Rack::QueryParser::ParameterTypeError',
27
28
  'Rack::QueryParser::InvalidParameterError',
28
29
  'CGI::Session::CookieStore::TamperedWithCookie',
29
30
  'Mongoid::Errors::DocumentNotFound',
30
- 'Sinatra::NotFound'].map(&:freeze).freeze
31
+ 'Sinatra::NotFound',
32
+ 'Sidekiq::JobRetry::Skip'].map(&:freeze).freeze
31
33
 
32
34
  DEVELOPMENT_ENVIRONMENTS = ['development', 'test', 'cucumber'].map(&:freeze).freeze
33
35
 
@@ -299,6 +301,11 @@ module Honeybadger
299
301
  default: true,
300
302
  type: Boolean
301
303
  },
304
+ :'rails.subscriber_ignore_sources' => {
305
+ description: "Sources (strings or regexes) that should be ignored when using the Rails' (7+) native error reporter.",
306
+ default: [],
307
+ type: Array
308
+ },
302
309
  :'resque.resque_retry.send_exceptions_when_retrying' => {
303
310
  description: 'Send exceptions when retrying job.',
304
311
  default: true,
@@ -26,7 +26,11 @@ module Honeybadger
26
26
 
27
27
  def self.load_yaml(path)
28
28
  begin
29
- yaml = YAML.load(ERB.new(path.read).result)
29
+ # This uses `YAML.unsafe_load` to support loading arbitrary Ruby
30
+ # classes, such as !ruby/regexp. This was the default behavior prior
31
+ # to Psych 4. https://bugs.ruby-lang.org/issues/17866
32
+ method = YAML.respond_to?(:unsafe_load) ? :unsafe_load : :load
33
+ yaml = YAML.send(method, ERB.new(path.read).result)
30
34
  rescue => e
31
35
  config_error = ConfigError.new(e.to_s)
32
36
 
@@ -17,7 +17,7 @@ module Honeybadger
17
17
  app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserFeedback)
18
18
  end
19
19
 
20
- config.after_initialize do
20
+ config.before_initialize do
21
21
  Honeybadger.init!({
22
22
  :root => ::Rails.root.to_s,
23
23
  :env => ::Rails.env,
@@ -25,6 +25,9 @@ module Honeybadger
25
25
  :logger => Logging::FormattedLogger.new(::Rails.logger),
26
26
  :framework => :rails
27
27
  })
28
+ end
29
+
30
+ config.after_initialize do
28
31
  Honeybadger.load_plugins!
29
32
  end
30
33
  end
@@ -53,11 +53,11 @@ module Honeybadger
53
53
 
54
54
  # @api private
55
55
  # The String character used to split tag strings.
56
- TAG_SEPERATOR = ','.freeze
56
+ TAG_SEPERATOR = /,|\s/.freeze
57
57
 
58
58
  # @api private
59
59
  # The Regexp used to strip invalid characters from individual tags.
60
- TAG_SANITIZER = /[^\w]/.freeze
60
+ TAG_SANITIZER = /\s/.freeze
61
61
 
62
62
  # @api private
63
63
  class Cause
@@ -2,7 +2,7 @@ require 'forwardable'
2
2
 
3
3
  module Honeybadger
4
4
  # +Honeybadger::Plugin+ defines the API for registering plugins with
5
- # Honeybadger. Each plugin has requirements which must be satisified before
5
+ # Honeybadger. Each plugin has requirements which must be satisfied before
6
6
  # executing the plugin's execution block(s). This allows us to detect
7
7
  # optional dependencies and load the plugin for each dependency only if it's
8
8
  # present in the application.
@@ -62,7 +62,7 @@ module Honeybadger
62
62
  # execution { }
63
63
  # end
64
64
  #
65
- # @param [String] name The optional name of the plugin. Should use
65
+ # @param [String, Symbol] name The optional name of the plugin. Should use
66
66
  # +snake_case+. The name is inferred from the current file name if omitted.
67
67
  #
68
68
  # @return nil
@@ -3,12 +3,57 @@ require 'honeybadger/util/lambda'
3
3
 
4
4
  module Honeybadger
5
5
  module Plugins
6
+ module LambdaExtension
7
+ # Wrap Lambda handlers so exceptions can be automatically captured
8
+ #
9
+ # Usage:
10
+ #
11
+ # # Automatically included in the top-level main object
12
+ # hb_wrap_handler :my_handler_1, :my_handler_2
13
+ #
14
+ # def my_handler_1(event:, context:)
15
+ # end
16
+ #
17
+ # class MyLambdaApp
18
+ # extend ::Honeybadger::Plugins::LambdaExtension
19
+ #
20
+ # hb_wrap_handler :my_handler_1, :my_handler_2
21
+ #
22
+ # def self.my_handler_1(event:, context:)
23
+ # end
24
+ # end
25
+ def hb_wrap_handler(*handler_names)
26
+ mod = Module.new do
27
+ handler_names.each do |handler|
28
+ define_method(handler) do |event:, context:|
29
+ begin
30
+ Honeybadger.context(aws_request_id: context.aws_request_id) if context.respond_to?(:aws_request_id)
31
+
32
+ super(event: event, context: context)
33
+ rescue => e
34
+ Honeybadger.notify(e)
35
+ raise
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ self.singleton_class.prepend(mod)
42
+ Kernel.singleton_class.prepend(mod) if self == TOPLEVEL_BINDING.eval("self")
43
+ end
44
+ end
45
+
6
46
  # @api private
7
47
  Plugin.register :lambda do
8
48
  requirement { Util::Lambda.lambda_execution? }
9
49
 
10
50
  execution do
11
51
  config[:sync] = true
52
+ config[:'exceptions.notify_at_exit'] = false
53
+
54
+ main = TOPLEVEL_BINDING.eval("self")
55
+ main.extend(LambdaExtension)
56
+
12
57
  (config[:before_notify] ||= []) << lambda do |notice|
13
58
  data = Util::Lambda.normalized_data
14
59
 
@@ -29,6 +29,16 @@ module Honeybadger
29
29
  end
30
30
  end
31
31
 
32
+ class ErrorSubscriber
33
+ def self.report(exception, handled:, severity:, context: {}, source: nil)
34
+ return if source && ::Honeybadger.config[:'rails.subscriber_ignore_sources'].any? { |regex| regex.match?(source) }
35
+
36
+ tags = ["severity:#{severity}", "handled:#{handled}"]
37
+ tags << "source:#{source}" if source
38
+ Honeybadger.notify(exception, context: context, tags: tags)
39
+ end
40
+ end
41
+
32
42
  Plugin.register :rails_exceptions_catcher do
33
43
  requirement { defined?(::Rails.application) && ::Rails.application }
34
44
 
@@ -41,6 +51,11 @@ module Honeybadger
41
51
  # Rails 3.0.x and 3.1.x
42
52
  ::ActionDispatch::ShowExceptions.prepend(ExceptionsCatcher)
43
53
  end
54
+
55
+ if defined?(::ActiveSupport::ErrorReporter)
56
+ # Rails 7
57
+ ::Rails.error.subscribe(ErrorSubscriber)
58
+ end
44
59
  end
45
60
  end
46
61
  end
@@ -5,7 +5,7 @@ module Honeybadger
5
5
  module Plugins
6
6
  module Sidekiq
7
7
  class Middleware
8
- def call(worker, msg, queue)
8
+ def call(_worker, _msg, _queue)
9
9
  Honeybadger.clear!
10
10
  yield
11
11
  end
@@ -23,7 +23,7 @@ module Honeybadger
23
23
 
24
24
  if defined?(::Sidekiq::VERSION) && ::Sidekiq::VERSION > '3'
25
25
  ::Sidekiq.configure_server do |sidekiq|
26
- sidekiq.error_handlers << lambda {|ex, params|
26
+ sidekiq.error_handlers << lambda { |ex, params|
27
27
  job = params[:job] || params
28
28
  job_retry = job['retry'.freeze]
29
29
 
@@ -37,13 +37,15 @@ module Honeybadger
37
37
  attempt = retry_count ? retry_count + 1 : 0
38
38
 
39
39
  # Ensure we account for modified max_retries setting
40
- retry_limit = job_retry == true ? (sidekiq.options[:max_retries] || 25) : job_retry.to_i
40
+ default_max_retry_attempts = defined?(::Sidekiq::JobRetry::DEFAULT_MAX_RETRY_ATTEMPTS) ? ::Sidekiq::JobRetry::DEFAULT_MAX_RETRY_ATTEMPTS : 25
41
+ retry_limit = job_retry == true ? (sidekiq.options[:max_retries] || default_max_retry_attempts) : job_retry.to_i
42
+
41
43
  limit = [retry_limit, threshold].min
42
44
 
43
45
  return if attempt < limit
44
46
  end
45
47
 
46
- opts = {parameters: params}
48
+ opts = { parameters: params }
47
49
  if config[:'sidekiq.use_component']
48
50
  opts[:component] = job['wrapped'.freeze] || job['class'.freeze]
49
51
  opts[:action] = 'perform' if opts[:component]
@@ -74,7 +74,7 @@ module Honeybadger
74
74
  agent.add_breadcrumb(
75
75
  exception.class,
76
76
  metadata: {
77
- exception_message: exception.message
77
+ message: exception.message
78
78
  },
79
79
  category: "error"
80
80
  )
@@ -37,6 +37,7 @@ module Honeybadger
37
37
  def_delegator :'Honeybadger::Agent.instance', :add_breadcrumb
38
38
  def_delegator :'Honeybadger::Agent.instance', :breadcrumbs
39
39
  def_delegator :'Honeybadger::Agent.instance', :clear!
40
+ def_delegator :'Honeybadger::Agent.instance', :track_deployment
40
41
 
41
42
  # @!macro [attach] def_delegator
42
43
  # @!method $2(...)
@@ -4,7 +4,6 @@
4
4
  #honeybadger_feedback_form label { font-weight: bold; }
5
5
  #honeybadger_feedback_name, #honeybadger_feedback_email, #honeybadger_feedback_comment { width: 100%; padding: 0.5em; }
6
6
  #honeybadger_feedback_comment { height: 10em; }
7
- #honeybadger_feedback_submit { height: 1em; }
8
7
  #honeybadger_feedback_form .honeybadger-feedback-phone { display: none; }
9
8
  #honeybadger_feedback_link { font-size: 90%; }
10
9
  </style>
@@ -14,7 +14,7 @@ module Honeybadger
14
14
 
15
15
  class << self
16
16
  def lambda_execution?
17
- !!ENV["AWS_EXECUTION_ENV"]
17
+ !!ENV["AWS_LAMBDA_FUNCTION_NAME"]
18
18
  end
19
19
 
20
20
  def normalized_data
@@ -28,7 +28,7 @@ module Honeybadger
28
28
  return {} unless defined?(::Rack::Request)
29
29
  return {} unless env
30
30
 
31
- hash, request = {}, ::Rack::Request.new(env)
31
+ hash, request = {}, ::Rack::Request.new(env.dup)
32
32
 
33
33
  hash[:url] = extract_url(request)
34
34
  hash[:params] = extract_params(request)
@@ -3,9 +3,14 @@ module Honeybadger
3
3
  class Revision
4
4
  class << self
5
5
  def detect(root = Dir.pwd)
6
- from_heroku ||
6
+ revision = from_heroku ||
7
7
  from_capistrano(root) ||
8
8
  from_git
9
+
10
+ revision = revision.to_s.strip
11
+ return unless revision =~ /\S/
12
+
13
+ revision
9
14
  end
10
15
 
11
16
  private
@@ -21,12 +26,12 @@ module Honeybadger
21
26
  def from_capistrano(root)
22
27
  file = File.join(root, 'REVISION')
23
28
  return nil unless File.file?(file)
24
- File.read(file).strip rescue nil
29
+ File.read(file) rescue nil
25
30
  end
26
31
 
27
32
  def from_git
28
33
  return nil unless File.directory?('.git')
29
- `git rev-parse HEAD`.strip rescue nil
34
+ `git rev-parse HEAD 2> #{File::NULL}` rescue nil
30
35
  end
31
36
  end
32
37
  end
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # The current String Honeybadger version.
3
- VERSION = '4.7.2'.freeze
3
+ VERSION = '5.0.2'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybadger
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.7.2
4
+ version: 5.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Honeybadger Industries LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-17 00:00:00.000000000 Z
11
+ date: 2022-11-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Make managing application errors a more pleasant experience.
14
14
  email:
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  requirements: []
156
- rubygems_version: 3.1.2
156
+ rubygems_version: 3.2.3
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: Error reports you can be happy about.