honeybadger 5.1.0 → 5.2.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: 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