Class: Bugsnag::Breadcrumbs::OnBreadcrumbCallbackList

Inherits:
Object
  • Object
show all
Defined in:
lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ OnBreadcrumbCallbackList

Returns a new instance of OnBreadcrumbCallbackList.



5
6
7
8
9
# File 'lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb', line 5

def initialize(configuration)
  @callbacks = Set.new
  @mutex = Mutex.new
  @configuration = configuration
end

Instance Method Details

#add(callback) ⇒ void

This method returns an undefined value.

Parameters:

  • callback (Proc, Method, #call)


14
15
16
17
18
# File 'lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb', line 14

def add(callback)
  @mutex.synchronize do
    @callbacks.add(callback)
  end
end

#call(breadcrumb) ⇒ void

This method returns an undefined value.

Parameters:



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb', line 32

def call(breadcrumb)
  @callbacks.each do |callback|
    begin
      should_continue = callback.call(breadcrumb)
    rescue StandardError => e
      @configuration.warn("Error occurred in on_breadcrumb callback: '#{e}'")
      @configuration.warn("on_breadcrumb callback stacktrace: #{e.backtrace.inspect}")
    end

    # only stop if should_continue is explicity 'false' to allow callbacks
    # to return 'nil'
    if should_continue == false
      breadcrumb.ignore!
      break
    end
  end
end

#remove(callback) ⇒ void

This method returns an undefined value.

Parameters:

  • callback (Proc, Method, #call)


23
24
25
26
27
# File 'lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb', line 23

def remove(callback)
  @mutex.synchronize do
    @callbacks.delete(callback)
  end
end