Module: ExceptionNotifier
- Defined in:
- lib/exception_notifier.rb,
lib/exception_notifier/notifier.rb,
lib/exception_notifier/irc_notifier.rb,
lib/exception_notifier/base_notifier.rb,
lib/exception_notifier/email_notifier.rb,
lib/exception_notifier/slack_notifier.rb,
lib/exception_notifier/hipchat_notifier.rb,
lib/exception_notifier/webhook_notifier.rb,
lib/exception_notifier/campfire_notifier.rb,
lib/exception_notifier/mattermost_notifier.rb,
lib/exception_notifier/modules/backtrace_cleaner.rb
Defined Under Namespace
Modules: BacktraceCleaner
Classes: BaseNotifier, CampfireNotifier, EmailNotifier, HipchatNotifier, IrcNotifier, MattermostNotifier, Notifier, SlackNotifier, UndefinedNotifierError, WebhookNotifier
Constant Summary
collapse
- @@logger =
Logger.new(STDOUT)
- @@ignored_exceptions =
%w{ActiveRecord::RecordNotFound AbstractController::ActionNotFound ActionController::RoutingError ActionController::UnknownFormat ActionController::UrlGenerationError}
- @@testing_mode =
false
- @@ignores =
Store conditions that decide when exceptions must be ignored or not.
[]
- @@notifiers =
Store notifiers that send notifications when exceptions are raised.
{}
Class Method Summary
collapse
Class Method Details
.clear_ignore_conditions! ⇒ Object
85
86
87
|
# File 'lib/exception_notifier.rb', line 85
def clear_ignore_conditions!
@@ignores.clear
end
|
.ignore_if(&block) ⇒ Object
Adds a condition to decide when an exception must be ignored or not.
ExceptionNotifier.ignore_if do |exception, options|
not Rails.env.production?
end
81
82
83
|
# File 'lib/exception_notifier.rb', line 81
def ignore_if(&block)
@@ignores << block
end
|
.notifiers ⇒ Object
72
73
74
|
# File 'lib/exception_notifier.rb', line 72
def notifiers
@@notifiers.keys
end
|
.notify_exception(exception, options = {}) ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'lib/exception_notifier.rb', line 43
def notify_exception(exception, options={})
return false if ignored_exception?(options[:ignore_exceptions], exception)
return false if ignored?(exception, options)
selected_notifiers = options.delete(:notifiers) || notifiers
[*selected_notifiers].each do |notifier|
fire_notification(notifier, exception, options.dup)
end
true
end
|
.register_exception_notifier(name, notifier_or_options) ⇒ Object
Also known as:
add_notifier
53
54
55
56
57
58
59
60
61
|
# File 'lib/exception_notifier.rb', line 53
def register_exception_notifier(name, notifier_or_options)
if notifier_or_options.respond_to?(:call)
@@notifiers[name] = notifier_or_options
elsif notifier_or_options.is_a?(Hash)
create_and_register_notifier(name, notifier_or_options)
else
raise ArgumentError, "Invalid notifier '#{name}' defined as #{notifier_or_options.inspect}"
end
end
|
.registered_exception_notifier(name) ⇒ Object
68
69
70
|
# File 'lib/exception_notifier.rb', line 68
def registered_exception_notifier(name)
@@notifiers[name]
end
|
.testing_mode! ⇒ Object
39
40
41
|
# File 'lib/exception_notifier.rb', line 39
def testing_mode!
self.testing_mode = true
end
|
.unregister_exception_notifier(name) ⇒ Object
64
65
66
|
# File 'lib/exception_notifier.rb', line 64
def unregister_exception_notifier(name)
@@notifiers.delete(name)
end
|