module SmokeDetector

Constants

PROVIDERS
VERSION

Public Class Methods

alert(exception, options = {}) click to toggle source

Reports an exception through SmokeDetector. Returns nil.

@example

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

@param exception [Exception] The exception object to report @option options [Hash] :data Additional data to include alongside the exception

# 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 = {}) click to toggle source

Records a message through SmokeDetector. Returns nil.

@example

SmokeDetector.message('Look out!')

@param message [String] The message to be recorded @option options [Hash] Additional data to include alongside the message @option options [Hash] :level The level at which to report the message

# File lib/smoke_detector.rb, line 33
def self.message(message, options = {})
  self.providers.each {|provider| provider.message(message, options) }
  nil
end
providers() click to toggle source
# File lib/smoke_detector/providers.rb, line 16
def self.providers
  @providers || []
end
register_provider(provider_name, api_key, client_settings = {}, settings = {}) click to toggle source
# 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) click to toggle source
# 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

Private Class Methods

classify_provider(provider_name) click to toggle source
# File lib/smoke_detector/providers.rb, line 28
def self.classify_provider(provider_name)
  raise ProviderRegistrationError, 'Unsupported Provider' unless PROVIDERS.include?(provider_name)
  ::ActiveSupport::Inflector.constantize("SmokeDetector::Providers::#{provider_name.capitalize}")
end