Module: SmokeDetector

Defined in:
lib/smoke_detector.rb,
lib/smoke_detector/engine.rb,
lib/smoke_detector/version.rb,
lib/smoke_detector/providers.rb,
lib/smoke_detector/exceptions.rb,
lib/smoke_detector/controller_methods.rb,
lib/smoke_detector/middleware/javascript_monitors.rb

Defined Under Namespace

Modules: ControllerMethods, Providers Classes: Engine, JavaScriptMonitors, ProviderRegistrationError

Constant Summary collapse

VERSION =
"2.0.1"
PROVIDERS =
[
  :airbrake,
  :rollbar
]

Class Method Summary collapse

Class Method Details

.alert(exception, options = {}) ⇒ Object

Reports an exception through SmokeDetector. Returns nil.

Examples:

begin
  foo = bar
rescue => e
  SmokeDetector.alert(e)
end

Parameters:

  • exception (Exception)

    The exception object to report

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :data (Hash)

    Additional data to include alongside the exception



20
21
22
23
# File 'lib/smoke_detector.rb', line 20

def self.alert(exception, options = {})
  self.providers.each {|provider| provider.alert(exception, options) }
  nil
end

.message(message, options = {}) ⇒ Object

Records a message through SmokeDetector. Returns nil.

Examples:

SmokeDetector.message('Look out!')

Parameters:

  • message (String)

    The message to be recorded

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • Additional (Hash)

    data to include alongside the message

  • :level (Hash)

    The level at which to report the message



33
34
35
36
# File 'lib/smoke_detector.rb', line 33

def self.message(message, options = {})
  self.providers.each {|provider| provider.message(message, options) }
  nil
end

.providersObject



16
17
18
# File 'lib/smoke_detector/providers.rb', line 16

def self.providers
  @providers || []
end

.register_provider(provider_name, api_key, client_settings = {}, settings = {}) ⇒ Object



9
10
11
12
13
14
# File 'lib/smoke_detector/providers.rb', line 9

def self.register_provider(provider_name, api_key, client_settings = {}, settings = {})
  @providers ||= []
  raise ProviderRegistrationError, 'Unsupported Provider' unless PROVIDERS.include?(provider_name)
  raise ProviderRegistrationError, 'Provider is already registered' if registered_provider?(provider_name)
  @providers << classify_provider(provider_name).new(api_key, client_settings, settings)
end

.registered_provider?(provider_name) ⇒ Boolean

Returns:

  • (Boolean)

Raises:



20
21
22
23
24
# File 'lib/smoke_detector/providers.rb', line 20

def self.registered_provider?(provider_name)
  raise ProviderRegistrationError, 'Unsupported Provider' unless PROVIDERS.include?(provider_name)
  klass = classify_provider(provider_name)
  !!SmokeDetector.providers.detect { |provider| provider.is_a?(klass) }
end