honeybadger 5.14.1 → 5.15.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 +4 -4
- data/CHANGELOG.md +15 -0
- data/lib/honeybadger/agent.rb +12 -1
- data/lib/honeybadger/backend/test.rb +15 -0
- data/lib/honeybadger/cli/test.rb +10 -0
- data/lib/honeybadger/config/defaults.rb +13 -2
- data/lib/honeybadger/config.rb +24 -3
- data/lib/honeybadger/event.rb +1 -1
- data/lib/honeybadger/notification_subscriber.rb +0 -1
- data/lib/honeybadger/plugins/solid_queue.rb +1 -1
- data/lib/honeybadger/version.rb +1 -1
- data/lib/honeybadger/worker.rb +2 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 60300a5d8ccaecda5eeff8887f76c5c54dba5c4610539c4ff8865d1355a5c124
         | 
| 4 | 
            +
              data.tar.gz: d057c93fc1a8d24f6fdb4a952d5b56cf8dbf0f3ee07466eaad38d3be2efcad13
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 06cdba44a37870e7b2e51414efb9ac48f5e3dc8015403a7b40e3a12520f0d037ab77f90205ea85f610de2d9bee11b6b6d5bf63fcbfce6a8d296ef8d1aeec7af9
         | 
| 7 | 
            +
              data.tar.gz: 6538734d781bd200445e9ac603baf2fbd3b91a0e723112cb79d7468a56baaadc38921fdd75dfd4bde8ad25a67e911e3c56020dcff54f49414066abd68c83dc9a
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,6 +1,21 @@ | |
| 1 1 | 
             
            # Change Log
         | 
| 2 2 |  | 
| 3 3 |  | 
| 4 | 
            +
            ## [5.15.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.14.2...v5.15.0) (2024-07-18)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
             | 
| 7 | 
            +
            ### Features
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * define default events to ignore, allow for override ([#570](https://github.com/honeybadger-io/honeybadger-ruby/issues/570)) ([a6f2177](https://github.com/honeybadger-io/honeybadger-ruby/commit/a6f2177eb69b75eafef235768187ccf6b3a538f0))
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ## [5.14.2](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.14.1...v5.14.2) (2024-07-17)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
             | 
| 14 | 
            +
            ### Bug Fixes
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            * add []= delegator ([#590](https://github.com/honeybadger-io/honeybadger-ruby/issues/590)) ([9f1d6b5](https://github.com/honeybadger-io/honeybadger-ruby/commit/9f1d6b55e88497c4c37659fdfaeaa163c7794672))
         | 
| 17 | 
            +
            * add event method for cli backend test ([#588](https://github.com/honeybadger-io/honeybadger-ruby/issues/588)) ([1e047bb](https://github.com/honeybadger-io/honeybadger-ruby/commit/1e047bbcd17db676b96dd78eb918475e3a52ab1b))
         | 
| 18 | 
            +
             | 
| 4 19 | 
             
            ## [5.14.1](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.14.0...v5.14.1) (2024-07-15)
         | 
| 5 20 |  | 
| 6 21 |  | 
    
        data/lib/honeybadger/agent.rb
    CHANGED
    
    | @@ -404,7 +404,18 @@ module Honeybadger | |
| 404 404 | 
             
                    with_error_handling { hook.call(event) }
         | 
| 405 405 | 
             
                  end
         | 
| 406 406 |  | 
| 407 | 
            -
                  return if config.ignored_events.any?  | 
| 407 | 
            +
                  return if config.ignored_events.any? do |check|
         | 
| 408 | 
            +
                    with_error_handling do
         | 
| 409 | 
            +
                      check.all? do |keys, value|
         | 
| 410 | 
            +
                        if keys == [:event_type]
         | 
| 411 | 
            +
                          event.event_type&.match?(value)
         | 
| 412 | 
            +
                        elsif event.dig(*keys)
         | 
| 413 | 
            +
                          event.dig(*keys).to_s.match?(value)
         | 
| 414 | 
            +
                        end
         | 
| 415 | 
            +
                      end
         | 
| 416 | 
            +
                    end
         | 
| 417 | 
            +
                  end
         | 
| 418 | 
            +
             | 
| 408 419 | 
             
                  return if event.halted?
         | 
| 409 420 |  | 
| 410 421 | 
             
                  events_worker.push(event.as_json)
         | 
| @@ -13,6 +13,16 @@ module Honeybadger | |
| 13 13 | 
             
                    @notifications ||= Hash.new {|h,k| h[k] = [] }
         | 
| 14 14 | 
             
                  end
         | 
| 15 15 |  | 
| 16 | 
            +
                  # The event list.
         | 
| 17 | 
            +
                  #
         | 
| 18 | 
            +
                  # @example
         | 
| 19 | 
            +
                  #   Test.events # => [{}, {}, ...]
         | 
| 20 | 
            +
                  #
         | 
| 21 | 
            +
                  # @return [Array<Hash>] List of event payloads.
         | 
| 22 | 
            +
                  def self.events
         | 
| 23 | 
            +
                    @events ||= []
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 16 26 | 
             
                  # @api public
         | 
| 17 27 | 
             
                  # The check in list.
         | 
| 18 28 | 
             
                  #
         | 
| @@ -37,6 +47,11 @@ module Honeybadger | |
| 37 47 | 
             
                    super
         | 
| 38 48 | 
             
                  end
         | 
| 39 49 |  | 
| 50 | 
            +
                  def event(payload)
         | 
| 51 | 
            +
                    events << payload
         | 
| 52 | 
            +
                    super
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 40 55 | 
             
                  def check_in(id)
         | 
| 41 56 | 
             
                    check_ins << id
         | 
| 42 57 | 
             
                    super
         | 
    
        data/lib/honeybadger/cli/test.rb
    CHANGED
    
    | @@ -24,11 +24,21 @@ module Honeybadger | |
| 24 24 | 
             
                      @callings ||= Hash.new {|h,k| h[k] = [] }
         | 
| 25 25 | 
             
                    end
         | 
| 26 26 |  | 
| 27 | 
            +
                    def self.events
         | 
| 28 | 
            +
                      @events ||= []
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
             | 
| 27 31 | 
             
                    def notify(feature, payload)
         | 
| 28 32 | 
             
                      response = @backend.notify(feature, payload)
         | 
| 29 33 | 
             
                      self.class.callings[feature] << [payload, response]
         | 
| 30 34 | 
             
                      response
         | 
| 31 35 | 
             
                    end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    def event(payload)
         | 
| 38 | 
            +
                      response = @backend.event(payload)
         | 
| 39 | 
            +
                      self.class.events << [payload, response]
         | 
| 40 | 
            +
                      response
         | 
| 41 | 
            +
                    end
         | 
| 32 42 | 
             
                  end
         | 
| 33 43 |  | 
| 34 44 | 
             
                  def initialize(options)
         | 
| @@ -31,6 +31,12 @@ module Honeybadger | |
| 31 31 | 
             
                                  'Sinatra::NotFound',
         | 
| 32 32 | 
             
                                  'Sidekiq::JobRetry::Skip'].map(&:freeze).freeze
         | 
| 33 33 |  | 
| 34 | 
            +
                IGNORE_EVENTS_DEFAULT = [
         | 
| 35 | 
            +
                  { event_type: 'sql.active_record', query: /^(begin|commit)( transaction)?$/i },
         | 
| 36 | 
            +
                  { event_type: 'sql.active_record', query: /(solid_queue|good_job)/i },
         | 
| 37 | 
            +
                  { event_type: 'process_action.action_controller', controller: 'Rails::HealthController' }
         | 
| 38 | 
            +
                ].freeze
         | 
| 39 | 
            +
             | 
| 34 40 | 
             
                DEVELOPMENT_ENVIRONMENTS = ['development', 'test', 'cucumber'].map(&:freeze).freeze
         | 
| 35 41 |  | 
| 36 42 | 
             
                DEFAULT_PATHS = ['honeybadger.yml', 'config/honeybadger.yml', "#{ENV['HOME']}/honeybadger.yml"].map(&:freeze).freeze
         | 
| @@ -112,8 +118,13 @@ module Honeybadger | |
| 112 118 | 
             
                    type: Boolean
         | 
| 113 119 | 
             
                  },
         | 
| 114 120 | 
             
                  :'events.ignore' => {
         | 
| 115 | 
            -
                    description: 'A list of events to ignore. Use a  | 
| 116 | 
            -
                    default:  | 
| 121 | 
            +
                    description: 'A list of additional events to ignore. Use a hash to query nested payloads, match using a string or regex. Non-hash will match on the event_type.',
         | 
| 122 | 
            +
                    default: IGNORE_EVENTS_DEFAULT,
         | 
| 123 | 
            +
                    type: Array
         | 
| 124 | 
            +
                  },
         | 
| 125 | 
            +
                  :'events.ignore_only' => {
         | 
| 126 | 
            +
                    description: 'A list of events to ignore (overrides the default ignored events).',
         | 
| 127 | 
            +
                    default: nil,
         | 
| 117 128 | 
             
                    type: Array
         | 
| 118 129 | 
             
                  },
         | 
| 119 130 | 
             
                  plugins: {
         | 
    
        data/lib/honeybadger/config.rb
    CHANGED
    
    | @@ -192,10 +192,22 @@ module Honeybadger | |
| 192 192 | 
             
                  DEFAULTS[:'exceptions.ignore'] | Array(ignore)
         | 
| 193 193 | 
             
                end
         | 
| 194 194 |  | 
| 195 | 
            +
                def raw_ignored_events
         | 
| 196 | 
            +
                  ignore_only = get(:'events.ignore_only')
         | 
| 197 | 
            +
                  return ignore_only if ignore_only
         | 
| 198 | 
            +
                  return DEFAULTS[:'events.ignore'] unless ignore = get(:'events.ignore')
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                  DEFAULTS[:'events.ignore'] | Array(ignore)
         | 
| 201 | 
            +
                end
         | 
| 202 | 
            +
             | 
| 195 203 | 
             
                def ignored_events
         | 
| 196 | 
            -
                   | 
| 197 | 
            -
                    check.is_a?(String)  | 
| 198 | 
            -
             | 
| 204 | 
            +
                  @ignored_events ||= raw_ignored_events.map do |check|
         | 
| 205 | 
            +
                    if check.is_a?(String) || check.is_a?(Regexp)
         | 
| 206 | 
            +
                      { [:event_type] => check }
         | 
| 207 | 
            +
                    elsif check.is_a?(Hash)
         | 
| 208 | 
            +
                      flat_hash(check).transform_keys! { |key_array| key_array.map(&:to_sym) }
         | 
| 209 | 
            +
                    end
         | 
| 210 | 
            +
                  end.compact
         | 
| 199 211 | 
             
                end
         | 
| 200 212 |  | 
| 201 213 | 
             
                def ca_bundle_path
         | 
| @@ -455,5 +467,14 @@ module Honeybadger | |
| 455 467 | 
             
                    end
         | 
| 456 468 | 
             
                  end
         | 
| 457 469 | 
             
                end
         | 
| 470 | 
            +
             | 
| 471 | 
            +
                # Converts a nested hash into a single layer where keys become arrays:
         | 
| 472 | 
            +
                # ex: > flat_hash({ :nested => { :hash => "value" }})
         | 
| 473 | 
            +
                #     > { [:nested, :hash] => "value" }
         | 
| 474 | 
            +
                def flat_hash(h,f=[],g={})
         | 
| 475 | 
            +
                  return g.update({ f=>h }) unless h.is_a? Hash
         | 
| 476 | 
            +
                  h.each { |k,r| flat_hash(r,f+[k],g) }
         | 
| 477 | 
            +
                  g
         | 
| 478 | 
            +
                end
         | 
| 458 479 | 
             
              end
         | 
| 459 480 | 
             
            end
         | 
    
        data/lib/honeybadger/event.rb
    CHANGED
    
    
| @@ -2,7 +2,7 @@ module Honeybadger | |
| 2 2 | 
             
              module Plugins
         | 
| 3 3 | 
             
                module SolidQueue
         | 
| 4 4 | 
             
                  Plugin.register :solid_queue do
         | 
| 5 | 
            -
                    requirement { defined?(::SolidQueue) }
         | 
| 5 | 
            +
                    requirement { config.load_plugin_insights?(:solid_queue) && defined?(::SolidQueue) }
         | 
| 6 6 |  | 
| 7 7 | 
             
                    collect do
         | 
| 8 8 | 
             
                      if config.cluster_collection?(:solid_queue)
         | 
    
        data/lib/honeybadger/version.rb
    CHANGED
    
    
    
        data/lib/honeybadger/worker.rb
    CHANGED
    
    | @@ -228,9 +228,9 @@ module Honeybadger | |
| 228 228 | 
             
                  when 201
         | 
| 229 229 | 
             
                    host = config.get(:'connection.ui_host')
         | 
| 230 230 | 
             
                    if throttle = dec_throttle
         | 
| 231 | 
            -
                      info { sprintf('Success ⚡ https | 
| 231 | 
            +
                      info { sprintf('Success ⚡ https://%s/notice/%s id=%s code=%s throttle=%s interval=%s', host, msg.id, msg.id, response.code, throttle, throttle_interval) }
         | 
| 232 232 | 
             
                    else
         | 
| 233 | 
            -
                      info { sprintf('Success ⚡ https | 
| 233 | 
            +
                      info { sprintf('Success ⚡ https://%s/notice/%s id=%s code=%s', host, msg.id, msg.id, response.code) }
         | 
| 234 234 | 
             
                    end
         | 
| 235 235 | 
             
                  when :stubbed
         | 
| 236 236 | 
             
                    info { sprintf('Success ⚡ Development mode is enabled; this error will be reported if it occurs after you deploy your app. id=%s', msg.id) }
         | 
    
        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. | 
| 4 | 
            +
              version: 5.15.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: 2024-07- | 
| 11 | 
            +
            date: 2024-07-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: Make managing application errors a more pleasant experience.
         | 
| 14 14 | 
             
            email:
         |