honeybadger 5.27.4 → 5.28.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: 792e12e3901c164ddd146d74d0c1db7dc1978f2ea4804c7e8c35ccee9e864906
4
- data.tar.gz: 92cb3e3455e09a2a9f708f645f22b06599626b5e0fe5e858362969b31133f65a
3
+ metadata.gz: a8183362165e34fd5896b5936721badd08db0d24935a10a46c63120ac6e76066
4
+ data.tar.gz: 51c0d0aaf04df683e5f1ef05ba342d50d8cc7693566567ace67e52a22244191c
5
5
  SHA512:
6
- metadata.gz: f26123e1ccd7cfc7ed146a4e31b99ec2b835cfd9825ad9dd8813941a0b781765e26007de5c38f4761628859d10d9d44f881f864c561648afe873e477e0b4cc10
7
- data.tar.gz: bcd09b18473e8d4839c68e54d7862fdf27a3bce4b01fc05b638a76e500eb55fd04be3b9268334ffa27e4737b002b383709bf6dda077801203704527007b4d19c
6
+ metadata.gz: 730c1514c746b72bc460d392e4fd6e2c7bb423ddc95d6a8b085f0955ef3feccba775570a904c5385d0899899c5003b304e48d2e99b90ad1fd25edf7d3f611dc6
7
+ data.tar.gz: dd930b1ac2f63c9d201a0c4cd128041092f7d28649d363c65bf73bad64323d982b6a4a99fb90d1a782e17dbda411529bf794484b4ebfdcb46e7be09473be29d2
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # Change Log
2
2
 
3
3
 
4
+ ## [5.28.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.27.4...v5.28.0) (2025-05-02)
5
+
6
+
7
+ ### Features
8
+
9
+ * add sampling ([#689](https://github.com/honeybadger-io/honeybadger-ruby/issues/689)) ([0692ab0](https://github.com/honeybadger-io/honeybadger-ruby/commit/0692ab07d33843dc2612c36713b0f126ecba6b35))
10
+
11
+
4
12
  ## [5.27.4](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.27.3...v5.27.4) (2025-04-30)
5
13
 
6
14
 
@@ -1,4 +1,5 @@
1
1
  require 'forwardable'
2
+ require 'zlib'
2
3
 
3
4
  require 'honeybadger/version'
4
5
  require 'honeybadger/config'
@@ -434,6 +435,10 @@ module Honeybadger
434
435
 
435
436
  return if event.halted?
436
437
 
438
+ return unless sample_event?(event)
439
+
440
+ strip_metadata(event)
441
+
437
442
  events_worker.push(event.as_json)
438
443
  end
439
444
 
@@ -570,6 +575,26 @@ module Honeybadger
570
575
 
571
576
  private
572
577
 
578
+ def strip_metadata(event)
579
+ event.delete(:_hb)
580
+ end
581
+
582
+ def sample_event?(event)
583
+ # Always send metrics events
584
+ return true if event[:event_type] == "metric.hb"
585
+
586
+ sample_rate = config[:'events.sample_rate']
587
+ sample_rate = event.dig(:_hb, :sample_rate) if event.dig(:_hb, :sample_rate).is_a?(Numeric)
588
+
589
+ return true if sample_rate >= 100
590
+
591
+ if event[:request_id] # Send all events for a given request
592
+ Zlib.crc32(event[:request_id].to_s) % 100 < sample_rate
593
+ else # Otherwise just take a random sample
594
+ rand(100) < sample_rate
595
+ end
596
+ end
597
+
573
598
  def validate_notify_opts!(opts)
574
599
  return if opts.has_key?(:exception)
575
600
  return if opts.has_key?(:error_message)
@@ -129,6 +129,11 @@ module Honeybadger
129
129
  default: nil,
130
130
  type: Array
131
131
  },
132
+ :'events.sample_rate' => {
133
+ description: 'Percentage of events to send to the API (0-100). A value of 0 means no events are sent, 100 means all events are sent.',
134
+ default: 100,
135
+ type: Integer
136
+ },
132
137
  plugins: {
133
138
  description: 'An optional list of plugins to load. Default is to load all plugins.',
134
139
  default: nil,
@@ -15,7 +15,7 @@ module Honeybadger
15
15
  # The payload data of the event
16
16
  attr_reader :payload
17
17
 
18
- def_delegators :payload, :dig, :[], :[]=
18
+ def_delegators :payload, :dig, :[], :[]=, :delete
19
19
 
20
20
  # @api private
21
21
  def initialize(event_type_or_payload, payload={})
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # The current String Honeybadger version.
3
- VERSION = '5.27.4'.freeze
3
+ VERSION = '5.28.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybadger
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.27.4
4
+ version: 5.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Honeybadger Industries LLC