honeybadger 5.28.0 → 5.29.1
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 +4 -4
- data/CHANGELOG.md +20 -0
- data/lib/honeybadger/agent.rb +49 -0
- data/lib/honeybadger/context_manager.rb +48 -0
- data/lib/honeybadger/plugins/solid_queue.rb +3 -2
- data/lib/honeybadger/singleton.rb +2 -0
- data/lib/honeybadger/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1e1fecf7b39c809814e61f1bb67cb0fc2c9bf63f07fc671df69c283295c36b0
|
4
|
+
data.tar.gz: 39bfb527313b211702dd5c8e4e44359e3286c676187d5abbac9e4a94f9d9300f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db73e8175ef7060b11e583c7563c518f1e6eb774492628ea06bf2850939075398361c626d9de255ebac9c054b4c1a23c0d0c19869eaad9a667736a3b178e1262
|
7
|
+
data.tar.gz: 5594b9a58edb39ed341518a1df43be8759eaad5ed0234ce72e81fa32083e2b8ae4d277ff2e95c1d8c14a7c3018b8a76f846c98c56780fdf47e1ce4d3f200e65a
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
3
|
|
4
|
+
## [5.29.1](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.29.0...v5.29.1) (2025-07-01)
|
5
|
+
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
|
9
|
+
* Revert "feat: exclude insights from rake tasks config ([#697](https://github.com/honeybadger-io/honeybadger-ruby/issues/697))" ([381566c](https://github.com/honeybadger-io/honeybadger-ruby/commit/381566cf976e110ff5b55770038aac25f51ee4ea)), closes [#702](https://github.com/honeybadger-io/honeybadger-ruby/issues/702)
|
10
|
+
|
11
|
+
## [5.29.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.28.0...v5.29.0) (2025-06-27)
|
12
|
+
|
13
|
+
|
14
|
+
### Features
|
15
|
+
|
16
|
+
* add event context ([#700](https://github.com/honeybadger-io/honeybadger-ruby/issues/700)) ([36abc18](https://github.com/honeybadger-io/honeybadger-ruby/commit/36abc1826a62954b83b11b10d7e91d41f3052524))
|
17
|
+
* exclude insights from rake tasks config ([#697](https://github.com/honeybadger-io/honeybadger-ruby/issues/697)) ([118034c](https://github.com/honeybadger-io/honeybadger-ruby/commit/118034c8395dd79fada9979f9f519ded8e81234a))
|
18
|
+
|
19
|
+
|
20
|
+
### Bug Fixes
|
21
|
+
|
22
|
+
* avoid database connections during asset precompilation ([#695](https://github.com/honeybadger-io/honeybadger-ruby/issues/695)) ([14ae485](https://github.com/honeybadger-io/honeybadger-ruby/commit/14ae4858da865cb6f95d16e1a12faf3ecc2caedd))
|
23
|
+
|
4
24
|
## [5.28.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.27.4...v5.28.0) (2025-05-02)
|
5
25
|
|
6
26
|
|
data/lib/honeybadger/agent.rb
CHANGED
@@ -413,6 +413,7 @@ module Honeybadger
|
|
413
413
|
extra_payload = {}.tap do |p|
|
414
414
|
p[:request_id] = context_manager.get_request_id if context_manager.get_request_id
|
415
415
|
p[:hostname] = config[:hostname].to_s if config[:'events.attach_hostname']
|
416
|
+
p.update(context_manager.get_event_context || {})
|
416
417
|
end
|
417
418
|
|
418
419
|
event = Event.new(event_type, extra_payload.merge(payload))
|
@@ -442,6 +443,54 @@ module Honeybadger
|
|
442
443
|
events_worker.push(event.as_json)
|
443
444
|
end
|
444
445
|
|
446
|
+
# Save event-specific context for the current request.
|
447
|
+
#
|
448
|
+
# @example
|
449
|
+
# Honeybadger.event_context({user_id: current_user.id})
|
450
|
+
#
|
451
|
+
# # Inside a Rails controller:
|
452
|
+
# before_action do
|
453
|
+
# Honeybadger.event_context({user_id: current_user.id})
|
454
|
+
# end
|
455
|
+
#
|
456
|
+
# # Explicit conversion
|
457
|
+
# class User < ActiveRecord::Base
|
458
|
+
# def to_honeybadger_context
|
459
|
+
# { user_id: id, user_email: email }
|
460
|
+
# end
|
461
|
+
# end
|
462
|
+
#
|
463
|
+
# user = User.first
|
464
|
+
# Honeybadger.event_context(user)
|
465
|
+
#
|
466
|
+
# # Clearing event context:
|
467
|
+
# Honeybadger.clear_event_context
|
468
|
+
#
|
469
|
+
# @param [Hash] context A Hash of data which will be sent to Honeybadger
|
470
|
+
# when an event occurs. If the object responds to +#to_honeybadger_context+,
|
471
|
+
# the return value of that method will be used (explicit conversion). Can
|
472
|
+
# include any key/value, but a few keys have a special meaning in
|
473
|
+
# Honeybadger.
|
474
|
+
#
|
475
|
+
# @return [Object, self] value of the block if passed, otherwise self
|
476
|
+
def event_context(context = nil, &block)
|
477
|
+
block_result = context_manager.set_event_context(context, &block) unless context.nil?
|
478
|
+
return block_result if block_given?
|
479
|
+
|
480
|
+
self
|
481
|
+
end
|
482
|
+
|
483
|
+
# Get event-specific context for the current request.
|
484
|
+
#
|
485
|
+
# @example
|
486
|
+
# Honeybadger.event_context({my_data: 'my value'})
|
487
|
+
# Honeybadger.get_event_context # => {my_data: 'my value'}
|
488
|
+
#
|
489
|
+
# @return [Hash, nil]
|
490
|
+
def get_event_context
|
491
|
+
context_manager.get_event_context
|
492
|
+
end
|
493
|
+
|
445
494
|
# @api private
|
446
495
|
def collect(collector)
|
447
496
|
return unless config.insights_enabled?
|
@@ -53,6 +53,52 @@ module Honeybadger
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
def clear_context
|
57
|
+
@mutex.synchronize do
|
58
|
+
@global_context = nil
|
59
|
+
@local_context = nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def set_event_context(hash, &block)
|
64
|
+
local = block_given?
|
65
|
+
@mutex.synchronize do
|
66
|
+
@global_event_context ||= {}
|
67
|
+
@local_event_context ||= []
|
68
|
+
|
69
|
+
new_context = Context(hash)
|
70
|
+
|
71
|
+
if local
|
72
|
+
@local_event_context << new_context
|
73
|
+
else
|
74
|
+
@global_event_context.update(new_context)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
if local
|
79
|
+
begin
|
80
|
+
yield
|
81
|
+
ensure
|
82
|
+
@mutex.synchronize { @local_event_context&.pop }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_event_context
|
88
|
+
@mutex.synchronize do
|
89
|
+
return @global_event_context unless @local_event_context
|
90
|
+
|
91
|
+
@global_event_context.merge(@local_event_context.inject({}, :merge))
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def clear_event_context
|
96
|
+
@mutex.synchronize do
|
97
|
+
@global_event_context = nil
|
98
|
+
@local_event_context = nil
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
56
102
|
def set_rack_env(env)
|
57
103
|
@mutex.synchronize { @rack_env = env }
|
58
104
|
end
|
@@ -77,6 +123,8 @@ module Honeybadger
|
|
77
123
|
@mutex.synchronize do
|
78
124
|
@global_context = nil
|
79
125
|
@local_context = nil
|
126
|
+
@global_event_context = nil
|
127
|
+
@local_event_context = nil
|
80
128
|
@rack_env = nil
|
81
129
|
@request_id = nil
|
82
130
|
end
|
@@ -3,6 +3,7 @@ module Honeybadger
|
|
3
3
|
module SolidQueue
|
4
4
|
Plugin.register :solid_queue do
|
5
5
|
requirement { config.load_plugin_insights?(:solid_queue) && defined?(::SolidQueue) }
|
6
|
+
requirement { defined?(ActiveRecord::Base) && ActiveRecord::Base.connected? }
|
6
7
|
|
7
8
|
collect_solid_queue_stats = -> do
|
8
9
|
data = {}
|
@@ -26,9 +27,9 @@ module Honeybadger
|
|
26
27
|
end
|
27
28
|
|
28
29
|
collect do
|
29
|
-
stats = collect_solid_queue_stats.call
|
30
|
-
|
31
30
|
if config.cluster_collection?(:solid_queue)
|
31
|
+
stats = collect_solid_queue_stats.call
|
32
|
+
|
32
33
|
if Honeybadger.config.load_plugin_insights_events?(:solid_queue)
|
33
34
|
Honeybadger.event('stats.solid_queue', stats.except(:stats).merge(stats[:stats]))
|
34
35
|
end
|
@@ -27,8 +27,10 @@ module Honeybadger
|
|
27
27
|
# @see Agent#$2
|
28
28
|
def_delegator :'Honeybadger::Agent.instance', :check_in
|
29
29
|
def_delegator :'Honeybadger::Agent.instance', :context
|
30
|
+
def_delegator :'Honeybadger::Agent.instance', :event_context
|
30
31
|
def_delegator :'Honeybadger::Agent.instance', :configure
|
31
32
|
def_delegator :'Honeybadger::Agent.instance', :get_context
|
33
|
+
def_delegator :'Honeybadger::Agent.instance', :get_event_context
|
32
34
|
def_delegator :'Honeybadger::Agent.instance', :flush
|
33
35
|
def_delegator :'Honeybadger::Agent.instance', :stop
|
34
36
|
def_delegator :'Honeybadger::Agent.instance', :exception_filter
|
data/lib/honeybadger/version.rb
CHANGED