honeybadger 4.11.0 → 4.12.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: 1542f59cbe55ad29fba4ea1ccc9acf4cc6fb36fa14bf6485f127846442682bdc
4
- data.tar.gz: 84f3fe4e7ed2b07548107f247585a3ecc38f411f8f8ac8ec23bd271fa80c942e
3
+ metadata.gz: dc234e187c3022616088debc469df8f765cde38e4f3f8bf008eab97ce1d0133e
4
+ data.tar.gz: 45d332816e07aa7d25e78cc075c2b2017eb51a97583ed0ba4709087adab023b7
5
5
  SHA512:
6
- metadata.gz: 074db0c6d16b50320a7ee86c4c63b229ecc97ce4841c6e5ba7791b637481150a236a6900fa55ff97075843b87b773c92f8469aaad46559e73624f46c0b5caf70
7
- data.tar.gz: 9a7968da09fa17c8e6c60768baeaea4173387b494913e5d90cca8984d39b0565886f387e9f113e7d321a8bc33f09a82419d6170fdf6dfa2f2fc74bfd3e79d35d
6
+ metadata.gz: 9f344e35e9a2928a3660aa0d6a55d695d58854f81b13d0ab13be4771c6a54a38893d2d0b2cee10f44e88f19140122803aa6f423072f1c39db0124686b252884e
7
+ data.tar.gz: bb7844be57da52cabf400a22fe09d5a45c9b3187e1eee224672f0ad000ea262002e16d36c754a2f5a7eedbce9b1e46bae9d765b351bf7b59c8df87a1fab46a3d
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [4.12.0] - 2022-03-30
9
+ ### Added
10
+ - Added `hb_wrap_handler` to automatically capture AWS Lambda handler errors
11
+
12
+ ### Fixed
13
+ - Change `:exception_message` key name to just `:exception` for error breadcrumb metadata.
14
+
8
15
  ## [4.11.0] - 2022-02-15
9
16
  ### Fixed
10
17
  - Allow special characters in tags. Also support space-delimited tags:
@@ -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,54 @@ 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
+ Honeybadger.context(aws_request_id: context.aws_request_id) if context.respond_to?(:aws_request_id)
30
+
31
+ super(event: event, context: context)
32
+ rescue => e
33
+ Honeybadger.notify(e)
34
+ raise
35
+ end
36
+ end
37
+ end
38
+
39
+ self.singleton_class.prepend(mod)
40
+ end
41
+ end
42
+
6
43
  # @api private
7
44
  Plugin.register :lambda do
8
45
  requirement { Util::Lambda.lambda_execution? }
9
46
 
10
47
  execution do
11
48
  config[:sync] = true
49
+ config[:'exceptions.notify_at_exit'] = false
50
+
51
+ main = TOPLEVEL_BINDING.eval("self")
52
+ main.extend(LambdaExtension)
53
+
12
54
  (config[:before_notify] ||= []) << lambda do |notice|
13
55
  data = Util::Lambda.normalized_data
14
56
 
@@ -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
  )
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # The current String Honeybadger version.
3
- VERSION = '4.11.0'.freeze
3
+ VERSION = '4.12.0'.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.11.0
4
+ version: 4.12.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: 2022-02-15 00:00:00.000000000 Z
11
+ date: 2022-03-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Make managing application errors a more pleasant experience.
14
14
  email: