honeybadger 6.6.1 → 6.7.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: d8149817ab5eb18b762dcefde9e378e02e9a687f1b8bf63e83a68cc2e803fc0c
4
- data.tar.gz: c731bc82495502d642d93a506766b7121c42c63d853107593943471d99903bca
3
+ metadata.gz: afa4582b4bb18d1f9afc94a2c551ceb45643ef57be27e071f4878970bde4dfdb
4
+ data.tar.gz: e80f53bbd49fd9db0d0334b5fceb9d0153a4e78272fb460209e6741300299e0d
5
5
  SHA512:
6
- metadata.gz: 60ec9dd33e226b4977e0be230d2b91188da3d59a41bc229c0cad7c81be49611f66a9e190bce9fcca7995476fd9c9d5de98b61f55a301f0350cf68614fa25aab6
7
- data.tar.gz: 33006f51b03dbfd292c15515879dd09c15687ab8b85683b1e019c7509ac41470e4758b227cb4d4a493bfad84553bf4fee94c03e3895385d5d7ec22331ef5f5fd
6
+ metadata.gz: d4086244d6d9857f5a49be22a889ca5b3b9bb789bc9015ff08732810428930e03d9b0e4b56149f670c3b1e5321497d795c5af9f21290630b80ed83c117aaa71d
7
+ data.tar.gz: f81135eefd9c61f33f27666e3e7ea7c94537dddaa19cc5e770765505f322ad62bf2096469a7abc2395bb1f0e78a9ea43309592c3580aae47e158299178cf6dd1
data/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Change Log
2
2
 
3
3
 
4
+ ## [6.7.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v6.6.2...v6.7.0) (2026-06-05)
5
+
6
+
7
+ ### Features
8
+
9
+ * add after_notify hooks ([#825](https://github.com/honeybadger-io/honeybadger-ruby/issues/825)) ([950fee2](https://github.com/honeybadger-io/honeybadger-ruby/commit/950fee2bb2ab81ebbfa20ea34b36045bd6b57034))
10
+ * make backtrace limit configurable ([#824](https://github.com/honeybadger-io/honeybadger-ruby/issues/824)) ([f62ce3a](https://github.com/honeybadger-io/honeybadger-ruby/commit/f62ce3ab09ffa497fbfb2ec1fa193359b66b1a23))
11
+
12
+ ## [6.6.2](https://github.com/honeybadger-io/honeybadger-ruby/compare/v6.6.0...v6.6.1) (2026-05-29)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * avoid duplicate BroadcastLogger breadcrumbs ([#814](https://github.com/honeybadger-io/honeybadger-ruby/issues/814)) ([4f5c5e0](https://github.com/honeybadger-io/honeybadger-ruby/commit/4f5c5e0dad934cc6a96f6444e257b733fd6471cf)), closes [#765](https://github.com/honeybadger-io/honeybadger-ruby/issues/765)
18
+ * change logging level for messages emitted in the development environment ([b615c83](https://github.com/honeybadger-io/honeybadger-ruby/commit/b615c83a75b8fcb45cd8b775696a6231e5c4e107))
19
+ * log the real reason for 403 responses ([#822](https://github.com/honeybadger-io/honeybadger-ruby/issues/822)) ([0338892](https://github.com/honeybadger-io/honeybadger-ruby/commit/03388926bb0cbb22f647860437565abf5bafd526))
20
+
4
21
  ## [6.6.1](https://github.com/honeybadger-io/honeybadger-ruby/compare/v6.6.0...v6.6.1) (2026-05-15)
5
22
 
6
23
 
@@ -50,6 +50,7 @@ module Honeybadger
50
50
 
51
51
  def error_message
52
52
  return message if code == :error
53
+ return error if code == 403 && NOT_BLANK.match?(error)
53
54
  return FRIENDLY_ERRORS[code] if FRIENDLY_ERRORS[code]
54
55
  return error if NOT_BLANK.match?(error)
55
56
  msg = "The server responded with #{code}"
@@ -4,6 +4,8 @@ module Honeybadger
4
4
  # @api private
5
5
  # Front end to parsing the backtrace for each notice.
6
6
  class Backtrace
7
+ DEFAULT_LIMIT = 1000
8
+
7
9
  # Handles backtrace parsing line by line.
8
10
  class Line
9
11
  # Backtrace line regexp (optionally allowing leading X: for windows support).
@@ -122,19 +124,20 @@ module Honeybadger
122
124
  Line.parse(unparsed_line.to_s, opts)
123
125
  end.compact
124
126
 
125
- new(lines)
127
+ new(lines, opts.fetch(:limit, DEFAULT_LIMIT))
126
128
  end
127
129
 
128
- def initialize(lines)
130
+ def initialize(lines, limit = DEFAULT_LIMIT)
129
131
  self.lines = lines
130
132
  self.application_lines = lines.select(&:application?)
133
+ self.limit = limit || DEFAULT_LIMIT
131
134
  end
132
135
 
133
136
  # Convert Backtrace to arry.
134
137
  #
135
138
  # Returns array containing backtrace lines.
136
139
  def to_ary
137
- lines.take(1000).map { |l| {number: l.filtered_number, file: l.filtered_file, method: l.filtered_method, source: l.source} }
140
+ lines.take(limit.clamp(0..)).map { |l| {number: l.filtered_number, file: l.filtered_file, method: l.filtered_method, source: l.source} }
138
141
  end
139
142
  alias_method :to_a, :to_ary
140
143
 
@@ -172,6 +175,8 @@ module Honeybadger
172
175
 
173
176
  attr_writer :lines, :application_lines
174
177
 
178
+ attr_accessor :limit
179
+
175
180
  class << self
176
181
  private
177
182
 
@@ -1,12 +1,23 @@
1
+ require "logger"
1
2
  require "honeybadger/util/sanitizer"
2
3
 
3
4
  module Honeybadger
4
5
  module Breadcrumbs
5
6
  # @api private
6
7
  #
7
- module LogWrapper
8
- def add(severity, message = nil, progname = nil)
9
- org_severity, org_message, org_progname = severity, message, progname
8
+ module LogHelper
9
+ LOG_SEVERITY_LABELS = {
10
+ ::Logger::DEBUG => "DEBUG",
11
+ ::Logger::INFO => "INFO",
12
+ ::Logger::WARN => "WARN",
13
+ ::Logger::ERROR => "ERROR",
14
+ ::Logger::FATAL => "FATAL",
15
+ ::Logger::UNKNOWN => "ANY"
16
+ }.freeze
17
+
18
+ private
19
+
20
+ def add_log_breadcrumb(severity, message = nil, progname = nil)
10
21
  if defined?(Dry::Logger::Entry) && progname.is_a?(Dry::Logger::Entry) # Hanami uses dry-logger
11
22
  message, progname = progname.message || progname.exception, progname.progname
12
23
  elsif message.nil?
@@ -15,24 +26,81 @@ module Honeybadger
15
26
  message &&= Util::Sanitizer.sanitize(message.to_s)&.strip
16
27
  unless should_ignore_log?(message, progname)
17
28
  Honeybadger.add_breadcrumb(message, category: :log, metadata: {
18
- severity: format_severity(severity),
29
+ severity: log_severity_label(severity),
19
30
  progname: progname
20
31
  })
21
32
  end
22
-
23
- super(org_severity, org_message, org_progname)
24
33
  end
25
34
 
26
- private
35
+ def log_severity_label(severity)
36
+ if self.class.method_defined?(:format_severity) || self.class.private_method_defined?(:format_severity)
37
+ return format_severity(severity)
38
+ end
39
+
40
+ LOG_SEVERITY_LABELS.fetch(severity, severity)
41
+ end
27
42
 
28
43
  def should_ignore_log?(message, progname)
29
44
  message.nil? ||
30
45
  message == "" ||
31
46
  Thread.current[:__hb_within_log_subscriber] ||
47
+ Thread.current[:__hb_within_broadcast_logger] ||
32
48
  progname == "honeybadger"
33
49
  end
34
50
  end
35
51
 
52
+ module LogWrapper
53
+ include LogHelper
54
+
55
+ def add(severity, message = nil, progname = nil, &block)
56
+ org_severity, org_message, org_progname = severity, message, progname
57
+ add_log_breadcrumb(severity, message, progname)
58
+
59
+ super(org_severity, org_message, org_progname, &block)
60
+ end
61
+ end
62
+
63
+ # @api private
64
+ #
65
+ # ActiveSupport::BroadcastLogger forwards one logical log event to multiple
66
+ # Logger instances. Wrapping it separately records the event once while
67
+ # silencing the sink loggers for the duration of the broadcast.
68
+ module BroadcastLogWrapper
69
+ include LogHelper
70
+
71
+ LOG_METHOD_SEVERITIES = {
72
+ debug: ::Logger::DEBUG,
73
+ info: ::Logger::INFO,
74
+ warn: ::Logger::WARN,
75
+ error: ::Logger::ERROR,
76
+ fatal: ::Logger::FATAL,
77
+ unknown: ::Logger::UNKNOWN
78
+ }.freeze
79
+
80
+ def add(severity, message = nil, progname = nil, &block)
81
+ add_log_breadcrumb(severity, message, progname)
82
+ without_sink_breadcrumbs { super(severity, message, progname, &block) }
83
+ end
84
+ alias_method :log, :add
85
+
86
+ LOG_METHOD_SEVERITIES.each do |level, severity|
87
+ define_method(level) do |progname = nil, &block|
88
+ add_log_breadcrumb(severity, nil, progname)
89
+ without_sink_breadcrumbs { super(progname, &block) }
90
+ end
91
+ end
92
+
93
+ private
94
+
95
+ def without_sink_breadcrumbs
96
+ previous = Thread.current[:__hb_within_broadcast_logger]
97
+ Thread.current[:__hb_within_broadcast_logger] = true
98
+ yield
99
+ ensure
100
+ Thread.current[:__hb_within_broadcast_logger] = previous
101
+ end
102
+ end
103
+
36
104
  # @api private
37
105
  #
38
106
  # This module is designed to be prepended into the
@@ -43,10 +111,11 @@ module Honeybadger
43
111
  module LogSubscriberInjector
44
112
  %w[info debug warn error fatal unknown].each do |level|
45
113
  define_method(level) do |*args, &block|
114
+ previous = Thread.current[:__hb_within_log_subscriber]
46
115
  Thread.current[:__hb_within_log_subscriber] = true
47
116
  super(*args, &block)
48
117
  ensure
49
- Thread.current[:__hb_within_log_subscriber] = false
118
+ Thread.current[:__hb_within_log_subscriber] = previous
50
119
  end
51
120
  end
52
121
  end
@@ -1,5 +1,6 @@
1
1
  require "socket"
2
2
  require "honeybadger/breadcrumbs/active_support"
3
+ require "honeybadger/backtrace"
3
4
 
4
5
  module Honeybadger
5
6
  class Config
@@ -321,6 +322,11 @@ module Honeybadger
321
322
  default: 2,
322
323
  type: Integer
323
324
  },
325
+ "exceptions.backtrace_limit": {
326
+ description: "The maximum number of backtrace lines to include in error reports.",
327
+ default: Backtrace::DEFAULT_LIMIT,
328
+ type: Integer
329
+ },
324
330
  "exceptions.local_variables": {
325
331
  description: "Enable sending local variables. Requires binding_of_caller to be loaded.",
326
332
  default: false,
@@ -89,21 +89,61 @@ module Honeybadger
89
89
  def before_notify(action = nil, &block)
90
90
  hooks = Array(get(:before_notify)).dup
91
91
 
92
- if action && validate_before_action(action, "notify")
92
+ if action && validate_hook_action(action, "before notify", 1)
93
93
  hooks << action
94
- elsif block_given? && validate_before_action(block, "notify")
94
+ elsif block_given? && validate_hook_action(block, "before notify", 1)
95
95
  hooks << block
96
96
  end
97
97
 
98
98
  hash[:before_notify] = hooks
99
99
  end
100
100
 
101
+ # Run a hook after each error notice delivery attempt.
102
+ #
103
+ # The hook is called for every backend response, including successful
104
+ # deliveries. Response codes are usually HTTP status integers, but may be
105
+ # symbols such as :stubbed or :error for non-server backends or connection
106
+ # failures. Filter with exact response codes (e.g. `response.code == 413`)
107
+ # rather than broad integer comparisons, or use `response.success?`.
108
+ # (Note: `response.error_message` may raise for non-HTTP responses like `:stubbed`.)
109
+ #
110
+ # Prefer `Honeybadger.event` for reporting failed notice deliveries. Calling
111
+ # `Honeybadger.notify` from this hook can trigger another after_notify call;
112
+ # guard against self-reporting loops if a notice must be sent.
113
+ #
114
+ # @example Report oversized notice payloads
115
+ # config.after_notify do |notice, response|
116
+ # next unless response.code == 413
117
+ #
118
+ # Honeybadger.event("honeybadger.notice_rejected", {
119
+ # reason: "payload_too_large",
120
+ # notice_id: notice.id,
121
+ # payload_bytes: notice.to_json.bytesize
122
+ # })
123
+ # end
124
+ #
125
+ # @yieldparam notice [Honeybadger::Notice] The notice that was sent.
126
+ # @yieldparam response [Honeybadger::Backend::Response] The backend response.
127
+ # @return [Array<Proc>] configured hooks
128
+ # @api public
129
+ def after_notify(action = nil, &block)
130
+ hooks = Array(get(:after_notify)).dup
131
+
132
+ if action && validate_hook_action(action, "after notify", 2)
133
+ hooks << action
134
+ elsif block_given? && validate_hook_action(block, "after notify", 2)
135
+ hooks << block
136
+ end
137
+
138
+ hash[:after_notify] = hooks
139
+ end
140
+
101
141
  def before_event(action = nil, &block)
102
142
  hooks = Array(get(:before_event)).dup
103
143
 
104
- if action && validate_before_action(action, "event")
144
+ if action && validate_hook_action(action, "before event", 1)
105
145
  hooks << action
106
- elsif block_given? && validate_before_action(block, "event")
146
+ elsif block_given? && validate_hook_action(block, "before event", 1)
107
147
  hooks << block
108
148
  end
109
149
 
@@ -139,18 +179,18 @@ module Honeybadger
139
179
 
140
180
  private
141
181
 
142
- def validate_before_action(action, type)
182
+ def validate_hook_action(action, name, arity)
143
183
  if !action.respond_to?(:call)
144
184
  logger.warn(
145
- "You attempted to add a before #{type} hook that does not respond " \
185
+ "You attempted to add a #{name} hook that does not respond " \
146
186
  "to #call. We are discarding this hook so your intended behavior " \
147
187
  "will not occur."
148
188
  )
149
189
  false
150
- elsif action.arity != 1
190
+ elsif action.arity != arity
151
191
  logger.warn(
152
- "You attempted to add a before #{type} hook that has an arity " \
153
- "other than one. We are discarding this hook so your intended " \
192
+ "You attempted to add a #{name} hook that has an arity " \
193
+ "other than #{arity}. We are discarding this hook so your intended " \
154
194
  "behavior will not occur."
155
195
  )
156
196
  false
@@ -92,6 +92,10 @@ module Honeybadger
92
92
  (ruby[:before_notify] || []).clone
93
93
  end
94
94
 
95
+ def after_notify_hooks
96
+ (ruby[:after_notify] || []).clone
97
+ end
98
+
95
99
  def before_event_hooks
96
100
  (ruby[:before_event] || []).clone
97
101
  end
@@ -294,7 +294,7 @@ module Honeybadger
294
294
  warn { sprintf("Insights Event send failed: payment is required. code=%s", response.code) }
295
295
  suspend(3600)
296
296
  when 403
297
- warn { sprintf("Insights Event send failed: API key is invalid. code=%s", response.code) }
297
+ warn { sprintf("Insights Event send failed: %s code=%s", response.error_message, response.code) }
298
298
  suspend(3600)
299
299
  when 413
300
300
  warn { sprintf("Insights Event send failed: Payload is too large. code=%s", response.code) }
@@ -509,7 +509,8 @@ module Honeybadger
509
509
  backtrace,
510
510
  filters: construct_backtrace_filters(opts),
511
511
  config: config,
512
- source_radius: config[:"exceptions.source_radius"]
512
+ source_radius: config[:"exceptions.source_radius"],
513
+ limit: config[:"exceptions.backtrace_limit"]
513
514
  ).to_a
514
515
  end
515
516
 
@@ -50,7 +50,11 @@ module Honeybadger
50
50
  config[:"breadcrumbs.active_support_notifications"].each do |name, config|
51
51
  RailsBreadcrumbs.subscribe_to_notification(name, config)
52
52
  end
53
- ActiveSupport::LogSubscriber.prepend(Honeybadger::Breadcrumbs::LogSubscriberInjector) if config[:"breadcrumbs.logging.enabled"]
53
+
54
+ if config[:"breadcrumbs.logging.enabled"]
55
+ ActiveSupport::LogSubscriber.prepend(Honeybadger::Breadcrumbs::LogSubscriberInjector)
56
+ ActiveSupport::BroadcastLogger.prepend(Honeybadger::Breadcrumbs::BroadcastLogWrapper) if defined?(ActiveSupport::BroadcastLogger)
57
+ end
54
58
  end
55
59
 
56
60
  ::Logger.prepend(Honeybadger::Breadcrumbs::LogWrapper) if config[:"breadcrumbs.logging.enabled"]
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # The current String Honeybadger version.
3
- VERSION = "6.6.1".freeze
3
+ VERSION = "6.7.0".freeze
4
4
  end
@@ -46,7 +46,9 @@ module Honeybadger
46
46
  end
47
47
 
48
48
  def send_now(msg)
49
- handle_response(msg, notify_backend(msg))
49
+ response = notify_backend(msg)
50
+ run_after_notify_hooks(msg, response)
51
+ handle_response(msg, response)
50
52
  end
51
53
 
52
54
  def shutdown(force = false)
@@ -189,6 +191,21 @@ module Honeybadger
189
191
  backend.notify(:notices, payload)
190
192
  end
191
193
 
194
+ def run_after_notify_hooks(msg, response)
195
+ config.after_notify_hooks.each do |hook|
196
+ with_error_handling { hook.call(msg, response) }
197
+ end
198
+ end
199
+
200
+ def with_error_handling
201
+ yield
202
+ rescue => ex
203
+ error {
204
+ msg = "Rescued an error in an after notify hook class=%s message=%s\n\t%s"
205
+ sprintf(msg, ex.class, ex.message.dump, Array(ex.backtrace).join("\n\t"))
206
+ }
207
+ end
208
+
192
209
  def calc_throttle_interval
193
210
  ((BASE_THROTTLE**throttle) - 1).round(3)
194
211
  end
@@ -221,7 +238,7 @@ module Honeybadger
221
238
  warn { sprintf("Error report failed: payment is required. id=%s code=%s", msg.id, response.code) }
222
239
  suspend(3600)
223
240
  when 403
224
- warn { sprintf("Error report failed: API key is invalid. id=%s code=%s", msg.id, response.code) }
241
+ warn { sprintf("Error report failed: %s id=%s code=%s", response.error_message, msg.id, response.code) }
225
242
  suspend(3600)
226
243
  when 413
227
244
  warn { sprintf("Error report failed: Payload is too large. id=%s code=%s", msg.id, response.code) }
metadata CHANGED
@@ -1,218 +1,222 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybadger
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.6.1
4
+ version: 6.7.0
5
5
  platform: ruby
6
6
  authors:
7
- - Honeybadger Industries LLC
7
+ - Honeybadger Industries LLC
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: logger
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ">="
17
- - !ruby/object:Gem::Version
18
- version: '0'
19
- type: :runtime
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: '0'
26
- - !ruby/object:Gem::Dependency
27
- name: ostruct
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- description: Honeybadger.io unifies error tracking, performance and uptime monitoring,
41
- and logging in one powerfully simple platform. Detect, diagnose, and resolve production
42
- issues faster—so you can focus on building, not debugging.
12
+ - !ruby/object:Gem::Dependency
13
+ name: logger
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ -
17
+ - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: "0"
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ -
25
+ - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: "0"
28
+ - !ruby/object:Gem::Dependency
29
+ name: ostruct
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ -
33
+ - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ -
41
+ - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ description: "Honeybadger.io unifies error tracking, performance and uptime monitoring, and logging in one powerfully simple platform. Detect, diagnose, and resolve production issues faster—so you can focus on building, not debugging."
43
45
  email:
44
- - support@honeybadger.io
46
+ - support@honeybadger.io
45
47
  executables:
46
- - honeybadger
48
+ - honeybadger
47
49
  extensions: []
48
50
  extra_rdoc_files: []
49
51
  files:
50
- - AGENTS.md
51
- - CHANGELOG.md
52
- - CLAUDE.md
53
- - LICENSE
54
- - README.md
55
- - TROUBLESHOOTING.md
56
- - bin/honeybadger
57
- - lib/honeybadger.rb
58
- - lib/honeybadger/agent.rb
59
- - lib/honeybadger/backend.rb
60
- - lib/honeybadger/backend/base.rb
61
- - lib/honeybadger/backend/debug.rb
62
- - lib/honeybadger/backend/null.rb
63
- - lib/honeybadger/backend/server.rb
64
- - lib/honeybadger/backend/test.rb
65
- - lib/honeybadger/backtrace.rb
66
- - lib/honeybadger/breadcrumbs.rb
67
- - lib/honeybadger/breadcrumbs/active_support.rb
68
- - lib/honeybadger/breadcrumbs/breadcrumb.rb
69
- - lib/honeybadger/breadcrumbs/collector.rb
70
- - lib/honeybadger/breadcrumbs/logging.rb
71
- - lib/honeybadger/breadcrumbs/ring_buffer.rb
72
- - lib/honeybadger/cli.rb
73
- - lib/honeybadger/cli/deploy.rb
74
- - lib/honeybadger/cli/exec.rb
75
- - lib/honeybadger/cli/helpers.rb
76
- - lib/honeybadger/cli/heroku.rb
77
- - lib/honeybadger/cli/install.rb
78
- - lib/honeybadger/cli/main.rb
79
- - lib/honeybadger/cli/notify.rb
80
- - lib/honeybadger/cli/test.rb
81
- - lib/honeybadger/config.rb
82
- - lib/honeybadger/config/defaults.rb
83
- - lib/honeybadger/config/env.rb
84
- - lib/honeybadger/config/ruby.rb
85
- - lib/honeybadger/config/yaml.rb
86
- - lib/honeybadger/const.rb
87
- - lib/honeybadger/context_manager.rb
88
- - lib/honeybadger/conversions.rb
89
- - lib/honeybadger/counter.rb
90
- - lib/honeybadger/event.rb
91
- - lib/honeybadger/events_worker.rb
92
- - lib/honeybadger/gauge.rb
93
- - lib/honeybadger/histogram.rb
94
- - lib/honeybadger/init/hanami.rb
95
- - lib/honeybadger/init/rails.rb
96
- - lib/honeybadger/init/rake.rb
97
- - lib/honeybadger/init/ruby.rb
98
- - lib/honeybadger/init/sinatra.rb
99
- - lib/honeybadger/instrumentation.rb
100
- - lib/honeybadger/instrumentation_helper.rb
101
- - lib/honeybadger/karafka.rb
102
- - lib/honeybadger/logging.rb
103
- - lib/honeybadger/metric.rb
104
- - lib/honeybadger/metrics_worker.rb
105
- - lib/honeybadger/notice.rb
106
- - lib/honeybadger/notification_subscriber.rb
107
- - lib/honeybadger/plugin.rb
108
- - lib/honeybadger/plugins/active_agent.rb
109
- - lib/honeybadger/plugins/active_job.rb
110
- - lib/honeybadger/plugins/autotuner.rb
111
- - lib/honeybadger/plugins/breadcrumbs.rb
112
- - lib/honeybadger/plugins/delayed_job.rb
113
- - lib/honeybadger/plugins/delayed_job/plugin.rb
114
- - lib/honeybadger/plugins/faktory.rb
115
- - lib/honeybadger/plugins/flipper.rb
116
- - lib/honeybadger/plugins/karafka.rb
117
- - lib/honeybadger/plugins/lambda.rb
118
- - lib/honeybadger/plugins/local_variables.rb
119
- - lib/honeybadger/plugins/net_http.rb
120
- - lib/honeybadger/plugins/passenger.rb
121
- - lib/honeybadger/plugins/rails.rb
122
- - lib/honeybadger/plugins/resque.rb
123
- - lib/honeybadger/plugins/shoryuken.rb
124
- - lib/honeybadger/plugins/sidekiq.rb
125
- - lib/honeybadger/plugins/solid_queue.rb
126
- - lib/honeybadger/plugins/sucker_punch.rb
127
- - lib/honeybadger/plugins/system.rb
128
- - lib/honeybadger/plugins/thor.rb
129
- - lib/honeybadger/plugins/warden.rb
130
- - lib/honeybadger/rack/error_notifier.rb
131
- - lib/honeybadger/rack/user_feedback.rb
132
- - lib/honeybadger/rack/user_informer.rb
133
- - lib/honeybadger/registry.rb
134
- - lib/honeybadger/registry_execution.rb
135
- - lib/honeybadger/ruby.rb
136
- - lib/honeybadger/singleton.rb
137
- - lib/honeybadger/tasks.rb
138
- - lib/honeybadger/templates/feedback_form.erb
139
- - lib/honeybadger/timer.rb
140
- - lib/honeybadger/util/http.rb
141
- - lib/honeybadger/util/lambda.rb
142
- - lib/honeybadger/util/request_hash.rb
143
- - lib/honeybadger/util/request_payload.rb
144
- - lib/honeybadger/util/revision.rb
145
- - lib/honeybadger/util/sanitizer.rb
146
- - lib/honeybadger/util/sql.rb
147
- - lib/honeybadger/util/stats.rb
148
- - lib/honeybadger/version.rb
149
- - lib/honeybadger/worker.rb
150
- - lib/puma/plugin/honeybadger.rb
151
- - resources/ca-bundle.crt
152
- - vendor/capistrano-honeybadger/lib/capistrano/honeybadger.rb
153
- - vendor/capistrano-honeybadger/lib/capistrano/tasks/deploy.cap
154
- - vendor/capistrano-honeybadger/lib/honeybadger/capistrano.rb
155
- - vendor/capistrano-honeybadger/lib/honeybadger/capistrano/legacy.rb
156
- - vendor/cli/inifile.rb
157
- - vendor/cli/thor.rb
158
- - vendor/cli/thor/actions.rb
159
- - vendor/cli/thor/actions/create_file.rb
160
- - vendor/cli/thor/actions/create_link.rb
161
- - vendor/cli/thor/actions/directory.rb
162
- - vendor/cli/thor/actions/empty_directory.rb
163
- - vendor/cli/thor/actions/file_manipulation.rb
164
- - vendor/cli/thor/actions/inject_into_file.rb
165
- - vendor/cli/thor/base.rb
166
- - vendor/cli/thor/command.rb
167
- - vendor/cli/thor/core_ext/hash_with_indifferent_access.rb
168
- - vendor/cli/thor/core_ext/io_binary_read.rb
169
- - vendor/cli/thor/core_ext/ordered_hash.rb
170
- - vendor/cli/thor/error.rb
171
- - vendor/cli/thor/group.rb
172
- - vendor/cli/thor/invocation.rb
173
- - vendor/cli/thor/line_editor.rb
174
- - vendor/cli/thor/line_editor/basic.rb
175
- - vendor/cli/thor/line_editor/readline.rb
176
- - vendor/cli/thor/parser.rb
177
- - vendor/cli/thor/parser/argument.rb
178
- - vendor/cli/thor/parser/arguments.rb
179
- - vendor/cli/thor/parser/option.rb
180
- - vendor/cli/thor/parser/options.rb
181
- - vendor/cli/thor/rake_compat.rb
182
- - vendor/cli/thor/runner.rb
183
- - vendor/cli/thor/shell.rb
184
- - vendor/cli/thor/shell/basic.rb
185
- - vendor/cli/thor/shell/color.rb
186
- - vendor/cli/thor/shell/html.rb
187
- - vendor/cli/thor/util.rb
188
- - vendor/cli/thor/version.rb
189
- homepage: https://www.honeybadger.io/for/ruby/
52
+ - AGENTS.md
53
+ - CHANGELOG.md
54
+ - CLAUDE.md
55
+ - LICENSE
56
+ - README.md
57
+ - TROUBLESHOOTING.md
58
+ - bin/honeybadger
59
+ - lib/honeybadger.rb
60
+ - lib/honeybadger/agent.rb
61
+ - lib/honeybadger/backend.rb
62
+ - lib/honeybadger/backend/base.rb
63
+ - lib/honeybadger/backend/debug.rb
64
+ - lib/honeybadger/backend/null.rb
65
+ - lib/honeybadger/backend/server.rb
66
+ - lib/honeybadger/backend/test.rb
67
+ - lib/honeybadger/backtrace.rb
68
+ - lib/honeybadger/breadcrumbs.rb
69
+ - lib/honeybadger/breadcrumbs/active_support.rb
70
+ - lib/honeybadger/breadcrumbs/breadcrumb.rb
71
+ - lib/honeybadger/breadcrumbs/collector.rb
72
+ - lib/honeybadger/breadcrumbs/logging.rb
73
+ - lib/honeybadger/breadcrumbs/ring_buffer.rb
74
+ - lib/honeybadger/cli.rb
75
+ - lib/honeybadger/cli/deploy.rb
76
+ - lib/honeybadger/cli/exec.rb
77
+ - lib/honeybadger/cli/helpers.rb
78
+ - lib/honeybadger/cli/heroku.rb
79
+ - lib/honeybadger/cli/install.rb
80
+ - lib/honeybadger/cli/main.rb
81
+ - lib/honeybadger/cli/notify.rb
82
+ - lib/honeybadger/cli/test.rb
83
+ - lib/honeybadger/config.rb
84
+ - lib/honeybadger/config/defaults.rb
85
+ - lib/honeybadger/config/env.rb
86
+ - lib/honeybadger/config/ruby.rb
87
+ - lib/honeybadger/config/yaml.rb
88
+ - lib/honeybadger/const.rb
89
+ - lib/honeybadger/context_manager.rb
90
+ - lib/honeybadger/conversions.rb
91
+ - lib/honeybadger/counter.rb
92
+ - lib/honeybadger/event.rb
93
+ - lib/honeybadger/events_worker.rb
94
+ - lib/honeybadger/gauge.rb
95
+ - lib/honeybadger/histogram.rb
96
+ - lib/honeybadger/init/hanami.rb
97
+ - lib/honeybadger/init/rails.rb
98
+ - lib/honeybadger/init/rake.rb
99
+ - lib/honeybadger/init/ruby.rb
100
+ - lib/honeybadger/init/sinatra.rb
101
+ - lib/honeybadger/instrumentation.rb
102
+ - lib/honeybadger/instrumentation_helper.rb
103
+ - lib/honeybadger/karafka.rb
104
+ - lib/honeybadger/logging.rb
105
+ - lib/honeybadger/metric.rb
106
+ - lib/honeybadger/metrics_worker.rb
107
+ - lib/honeybadger/notice.rb
108
+ - lib/honeybadger/notification_subscriber.rb
109
+ - lib/honeybadger/plugin.rb
110
+ - lib/honeybadger/plugins/active_agent.rb
111
+ - lib/honeybadger/plugins/active_job.rb
112
+ - lib/honeybadger/plugins/autotuner.rb
113
+ - lib/honeybadger/plugins/breadcrumbs.rb
114
+ - lib/honeybadger/plugins/delayed_job.rb
115
+ - lib/honeybadger/plugins/delayed_job/plugin.rb
116
+ - lib/honeybadger/plugins/faktory.rb
117
+ - lib/honeybadger/plugins/flipper.rb
118
+ - lib/honeybadger/plugins/karafka.rb
119
+ - lib/honeybadger/plugins/lambda.rb
120
+ - lib/honeybadger/plugins/local_variables.rb
121
+ - lib/honeybadger/plugins/net_http.rb
122
+ - lib/honeybadger/plugins/passenger.rb
123
+ - lib/honeybadger/plugins/rails.rb
124
+ - lib/honeybadger/plugins/resque.rb
125
+ - lib/honeybadger/plugins/shoryuken.rb
126
+ - lib/honeybadger/plugins/sidekiq.rb
127
+ - lib/honeybadger/plugins/solid_queue.rb
128
+ - lib/honeybadger/plugins/sucker_punch.rb
129
+ - lib/honeybadger/plugins/system.rb
130
+ - lib/honeybadger/plugins/thor.rb
131
+ - lib/honeybadger/plugins/warden.rb
132
+ - lib/honeybadger/rack/error_notifier.rb
133
+ - lib/honeybadger/rack/user_feedback.rb
134
+ - lib/honeybadger/rack/user_informer.rb
135
+ - lib/honeybadger/registry.rb
136
+ - lib/honeybadger/registry_execution.rb
137
+ - lib/honeybadger/ruby.rb
138
+ - lib/honeybadger/singleton.rb
139
+ - lib/honeybadger/tasks.rb
140
+ - lib/honeybadger/templates/feedback_form.erb
141
+ - lib/honeybadger/timer.rb
142
+ - lib/honeybadger/util/http.rb
143
+ - lib/honeybadger/util/lambda.rb
144
+ - lib/honeybadger/util/request_hash.rb
145
+ - lib/honeybadger/util/request_payload.rb
146
+ - lib/honeybadger/util/revision.rb
147
+ - lib/honeybadger/util/sanitizer.rb
148
+ - lib/honeybadger/util/sql.rb
149
+ - lib/honeybadger/util/stats.rb
150
+ - lib/honeybadger/version.rb
151
+ - lib/honeybadger/worker.rb
152
+ - lib/puma/plugin/honeybadger.rb
153
+ - resources/ca-bundle.crt
154
+ - vendor/capistrano-honeybadger/lib/capistrano/honeybadger.rb
155
+ - vendor/capistrano-honeybadger/lib/capistrano/tasks/deploy.cap
156
+ - vendor/capistrano-honeybadger/lib/honeybadger/capistrano.rb
157
+ - vendor/capistrano-honeybadger/lib/honeybadger/capistrano/legacy.rb
158
+ - vendor/cli/inifile.rb
159
+ - vendor/cli/thor.rb
160
+ - vendor/cli/thor/actions.rb
161
+ - vendor/cli/thor/actions/create_file.rb
162
+ - vendor/cli/thor/actions/create_link.rb
163
+ - vendor/cli/thor/actions/directory.rb
164
+ - vendor/cli/thor/actions/empty_directory.rb
165
+ - vendor/cli/thor/actions/file_manipulation.rb
166
+ - vendor/cli/thor/actions/inject_into_file.rb
167
+ - vendor/cli/thor/base.rb
168
+ - vendor/cli/thor/command.rb
169
+ - vendor/cli/thor/core_ext/hash_with_indifferent_access.rb
170
+ - vendor/cli/thor/core_ext/io_binary_read.rb
171
+ - vendor/cli/thor/core_ext/ordered_hash.rb
172
+ - vendor/cli/thor/error.rb
173
+ - vendor/cli/thor/group.rb
174
+ - vendor/cli/thor/invocation.rb
175
+ - vendor/cli/thor/line_editor.rb
176
+ - vendor/cli/thor/line_editor/basic.rb
177
+ - vendor/cli/thor/line_editor/readline.rb
178
+ - vendor/cli/thor/parser.rb
179
+ - vendor/cli/thor/parser/argument.rb
180
+ - vendor/cli/thor/parser/arguments.rb
181
+ - vendor/cli/thor/parser/option.rb
182
+ - vendor/cli/thor/parser/options.rb
183
+ - vendor/cli/thor/rake_compat.rb
184
+ - vendor/cli/thor/runner.rb
185
+ - vendor/cli/thor/shell.rb
186
+ - vendor/cli/thor/shell/basic.rb
187
+ - vendor/cli/thor/shell/color.rb
188
+ - vendor/cli/thor/shell/html.rb
189
+ - vendor/cli/thor/util.rb
190
+ - vendor/cli/thor/version.rb
191
+ homepage: "https://www.honeybadger.io/for/ruby/"
190
192
  licenses:
191
- - MIT
193
+ - MIT
192
194
  metadata:
193
- bug_tracker_uri: https://github.com/honeybadger-io/honeybadger-ruby/issues
194
- changelog_uri: https://github.com/honeybadger-io/honeybadger-ruby/blob/master/CHANGELOG.md
195
- documentation_uri: https://docs.honeybadger.io/lib/ruby/
196
- homepage_uri: https://www.honeybadger.io/for/ruby/
197
- source_code_uri: https://github.com/honeybadger-io/honeybadger-ruby
195
+ bug_tracker_uri: "https://github.com/honeybadger-io/honeybadger-ruby/issues"
196
+ changelog_uri: "https://github.com/honeybadger-io/honeybadger-ruby/blob/master/CHANGELOG.md"
197
+ documentation_uri: "https://docs.honeybadger.io/lib/ruby/"
198
+ homepage_uri: "https://www.honeybadger.io/for/ruby/"
199
+ source_code_uri: "https://github.com/honeybadger-io/honeybadger-ruby"
198
200
  rdoc_options:
199
- - "--markup=tomdoc"
200
- - "--main=README.md"
201
+ - "--markup=tomdoc"
202
+ - "--main=README.md"
201
203
  require_paths:
202
- - lib
203
- - vendor/capistrano-honeybadger/lib
204
+ - lib
205
+ - vendor/capistrano-honeybadger/lib
204
206
  required_ruby_version: !ruby/object:Gem::Requirement
205
207
  requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: 3.0.0
208
+ -
209
+ - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: 3.0.0
209
212
  required_rubygems_version: !ruby/object:Gem::Requirement
210
213
  requirements:
211
- - - ">="
212
- - !ruby/object:Gem::Version
213
- version: '0'
214
+ -
215
+ - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: "0"
214
218
  requirements: []
215
- rubygems_version: 3.7.2
219
+ rubygems_version: 4.1.0.dev
216
220
  specification_version: 4
217
- summary: Full-stack error tracking, performance monitoring, logging, and more.
221
+ summary: "Full-stack error tracking, performance monitoring, logging, and more."
218
222
  test_files: []