honeybadger 4.7.2 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 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.