lib/honeybadger/breadcrumbs/collector.rb in honeybadger-5.0.2 vs lib/honeybadger/breadcrumbs/collector.rb in honeybadger-5.1.0

- old
+ new

@@ -1,82 +1,82 @@ -require 'forwardable' - -module Honeybadger - module Breadcrumbs - class Collector - include Enumerable - extend Forwardable - # The Collector manages breadcrumbs and provides an interface for accessing - # and affecting breadcrumbs - # - # Most actions are delegated to the current buffer implementation. A - # Buffer must implement all delegated methods to work with the Collector. - - # Flush all breadcrumbs, delegates to buffer - def_delegator :@buffer, :clear! - - # Iterate over all Breadcrumbs and satify Enumerable, delegates to buffer - # @yield [Object] sequentially gives breadcrumbs to the block - def_delegator :@buffer, :each - - # Raw Array of Breadcrumbs, delegates to buffer - # @return [Array] Raw set of breadcrumbs - def_delegator :@buffer, :to_a - - # Last item added to the buffer - # @return [Breadcrumb] - def_delegator :@buffer, :previous - - def initialize(config, buffer = RingBuffer.new) - @config = config - @buffer = buffer - end - - # Add Breadcrumb to stack - # - # @return [self] Filtered breadcrumbs - def add!(breadcrumb) - return unless @config[:'breadcrumbs.enabled'] - @buffer.add!(breadcrumb) - - self - end - - alias_method :<<, :add! - - # @api private - # Removes the prevous breadcrumb from the buffer if the supplied - # block returns a falsy value - # - def drop_previous_breadcrumb_if - @buffer.drop if (previous && block_given? && yield(previous)) - end - - # All active breadcrumbs you want to remove a breadcrumb from the trail, - # then you can selectively ignore breadcrumbs while building a notice. - # - # @return [Array] Active breadcrumbs - def trail - select(&:active?) - end - - def to_h - { - enabled: @config[:'breadcrumbs.enabled'], - trail: trail.map(&:to_h) - } - end - - private - - # @api private - # Since the collector is shared with the worker thread, there is a chance - # it can be cleared before we have prepared the request. We provide the - # ability to duplicate a collector which should also duplicate the buffer - # instance, as that holds the breadcrumbs. - def initialize_dup(source) - @buffer = source.instance_variable_get(:@buffer).dup - super - end - end - end -end +require 'forwardable' + +module Honeybadger + module Breadcrumbs + class Collector + include Enumerable + extend Forwardable + # The Collector manages breadcrumbs and provides an interface for accessing + # and affecting breadcrumbs + # + # Most actions are delegated to the current buffer implementation. A + # Buffer must implement all delegated methods to work with the Collector. + + # Flush all breadcrumbs, delegates to buffer + def_delegator :@buffer, :clear! + + # Iterate over all Breadcrumbs and satify Enumerable, delegates to buffer + # @yield [Object] sequentially gives breadcrumbs to the block + def_delegator :@buffer, :each + + # Raw Array of Breadcrumbs, delegates to buffer + # @return [Array] Raw set of breadcrumbs + def_delegator :@buffer, :to_a + + # Last item added to the buffer + # @return [Breadcrumb] + def_delegator :@buffer, :previous + + def initialize(config, buffer = RingBuffer.new) + @config = config + @buffer = buffer + end + + # Add Breadcrumb to stack + # + # @return [self] Filtered breadcrumbs + def add!(breadcrumb) + return unless @config[:'breadcrumbs.enabled'] + @buffer.add!(breadcrumb) + + self + end + + alias_method :<<, :add! + + # @api private + # Removes the prevous breadcrumb from the buffer if the supplied + # block returns a falsy value + # + def drop_previous_breadcrumb_if + @buffer.drop if (previous && block_given? && yield(previous)) + end + + # All active breadcrumbs you want to remove a breadcrumb from the trail, + # then you can selectively ignore breadcrumbs while building a notice. + # + # @return [Array] Active breadcrumbs + def trail + select(&:active?) + end + + def to_h + { + enabled: @config[:'breadcrumbs.enabled'], + trail: trail.map(&:to_h) + } + end + + private + + # @api private + # Since the collector is shared with the worker thread, there is a chance + # it can be cleared before we have prepared the request. We provide the + # ability to duplicate a collector which should also duplicate the buffer + # instance, as that holds the breadcrumbs. + def initialize_dup(source) + @buffer = source.instance_variable_get(:@buffer).dup + super + end + end + end +end