honeybadger 5.1.0 → 5.2.0

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: 495e86773179533582986a43b6ce4d4e4684d0e86c6d058fb160b68302e23bdb
4
- data.tar.gz: 262527b65fabaa95da6cba0c74eb5ff3b7761db77a2269af937781548499296a
3
+ metadata.gz: 96ba43cc6a1052b6c57bdf12a570fca681d44a18224eb7038bf1068b7f75f17f
4
+ data.tar.gz: 59ba7b1d6dcf34d22d6cf537da90083967e07dbe776776e5e20a1074049c3ad9
5
5
  SHA512:
6
- metadata.gz: 659998a88a62c2b0a8fb29239901b60b46a752241e71cd32b9c71ea094309894635bec2511f9c55582b70e1d59495b2fa8ccd5d78d06c6b3029a169aea2c9659
7
- data.tar.gz: be4319199aeed0f5cd4b3d0af56fd96e770e62fb8c56a7df2d624c61d707320d3763ea4e1da73d885d67322cc790cf64e4d85e589b18c0cb33833d8ee759c601
6
+ metadata.gz: c94ca978153e4685e2cc9f6f9f218a78576d3aed913f8cda8b9188a8a5988add04207130ad851288797bae252589077a432a65e189abbed3123abc66c2fdd171
7
+ data.tar.gz: d26deb2917c38c07bac863f21b78c9c606062668916708faeddc448e31ea8654b7c328e5986684d1b91bb9f89e51c56aa8f956398584630ca6b1706a41ba03d4
data/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [5.2.0] - 2023-02-28
9
+ ### Added
10
+ - First-class support for Hanami (#470)
11
+ - Auto-add Sinatra optional middleware (#471). This is fine, as they don't do anything without the magic strings (and they can be disabled via config, anyway).
12
+
8
13
  ## [5.1.0] - 2023-01-31
9
14
  ### Added
10
15
  - Support for `Exception#detailed_message` on Ruby 3.2 (#459)
@@ -5,7 +5,11 @@ module Honeybadger
5
5
  module LogWrapper
6
6
  def add(severity, message = nil, progname = nil)
7
7
  org_severity, org_message, org_progname = severity, message, progname
8
- message, progname = [progname, nil] if message.nil?
8
+ if defined?(Dry::Logger::Entry) && progname.is_a?(Dry::Logger::Entry) # Hanami uses dry-logger
9
+ message, progname = progname.message || progname.exception, progname.progname
10
+ else
11
+ message, progname = [progname, nil] if message.nil?
12
+ end
9
13
  message = message && message.to_s.strip
10
14
  unless should_ignore_log?(message, progname)
11
15
  Honeybadger.add_breadcrumb(message, category: :log, metadata: {
@@ -271,6 +271,8 @@ module Honeybadger
271
271
  :rails
272
272
  elsif defined?(::Sinatra::VERSION)
273
273
  :sinatra
274
+ elsif defined?(::Hanami::VERSION) && ::Hanami::VERSION >= '2.0'
275
+ :hanami
274
276
  elsif defined?(::Rack.release)
275
277
  :rack
276
278
  else
@@ -282,6 +284,7 @@ module Honeybadger
282
284
  case detected_framework
283
285
  when :rails then "Rails #{::Rails::VERSION::STRING}"
284
286
  when :sinatra then "Sinatra #{::Sinatra::VERSION}"
287
+ when :hanami then "Hanami #{::Hanami::VERSION}"
285
288
  when :rack then "Rack #{::Rack.release}"
286
289
  else
287
290
  "Ruby #{RUBY_VERSION}"
@@ -0,0 +1,19 @@
1
+ require 'honeybadger/ruby'
2
+
3
+ Honeybadger.init!({
4
+ :framework => :hanami,
5
+ :env => ENV['HANAMI_ENV'] || ENV['RACK_ENV'],
6
+ :'logging.path' => 'STDOUT'
7
+ })
8
+
9
+ Honeybadger.load_plugins!
10
+
11
+ if Hanami::VERSION >= '2.0'
12
+ Hanami.app.instance_eval do
13
+ config.middleware.use Honeybadger::Rack::UserFeedback
14
+ config.middleware.use Honeybadger::Rack::UserInformer
15
+ config.middleware.use Honeybadger::Rack::ErrorNotifier
16
+ end
17
+ end
18
+
19
+ Honeybadger.install_at_exit_callback
@@ -28,7 +28,13 @@ module Honeybadger
28
28
  def install_honeybadger
29
29
  config = Honeybadger.config
30
30
  return unless config[:'sinatra.enabled']
31
- install_honeybadger_middleware(Honeybadger::Rack::ErrorNotifier) if config[:'exceptions.enabled']
31
+ if config[:'exceptions.enabled']
32
+ # These two must come before the ErrorNotifier, since an error/response
33
+ # passes through middleware from inner to outer (bottom to top)
34
+ install_honeybadger_middleware(Honeybadger::Rack::UserFeedback)
35
+ install_honeybadger_middleware(Honeybadger::Rack::UserInformer)
36
+ install_honeybadger_middleware(Honeybadger::Rack::ErrorNotifier)
37
+ end
32
38
  end
33
39
 
34
40
  def install_honeybadger_middleware(klass)
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # The current String Honeybadger version.
3
- VERSION = '5.1.0'.freeze
3
+ VERSION = '5.2.0'.freeze
4
4
  end
data/lib/honeybadger.rb CHANGED
@@ -2,6 +2,8 @@ if defined?(::Rails::Railtie)
2
2
  require 'honeybadger/init/rails'
3
3
  elsif defined?(Sinatra::Base)
4
4
  require 'honeybadger/init/sinatra'
5
+ elsif defined?(::Hanami)
6
+ require 'honeybadger/init/hanami'
5
7
  else
6
8
  require 'honeybadger/init/ruby'
7
9
  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: 5.1.0
4
+ version: 5.2.0
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: 2023-01-31 00:00:00.000000000 Z
11
+ date: 2023-02-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Make managing application errors a more pleasant experience.
14
14
  email:
@@ -55,6 +55,7 @@ files:
55
55
  - lib/honeybadger/const.rb
56
56
  - lib/honeybadger/context_manager.rb
57
57
  - lib/honeybadger/conversions.rb
58
+ - lib/honeybadger/init/hanami.rb
58
59
  - lib/honeybadger/init/rails.rb
59
60
  - lib/honeybadger/init/rake.rb
60
61
  - lib/honeybadger/init/ruby.rb