Class: ExceptionNotifier::Rake

Inherits:
Object
  • Object
show all
Defined in:
lib/exception_notifier/rake/rake.rb,
lib/exception_notifier/rake/version.rb

Constant Summary collapse

VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.configure(options = {}) ⇒ Object

Configure Rake exception notifications. Should be called in a config file, usually in config/environments/production.rb for production use. An optional hash of options can be given, which will be passed through unchanged to the underlying notifiers.



18
19
20
21
22
23
24
25
26
27
# File 'lib/exception_notifier/rake/rake.rb', line 18

def self.configure(options = {})
  @notifier_options.merge!(default_notifier_options)
  @notifier_options.merge!(options)

  # Append view path for this gem, assuming that the client is using
  # ActionMailer::Base. This isn't ideal but there doesn't seem to be
  # a different way to extend the path.
  require 'action_mailer'
  ActionMailer::Base.append_view_path "#{File.dirname(__FILE__)}/views"
end

.configured?Boolean

Whether Rake exception notifications have been configured.

Returns:

  • (Boolean)


10
11
12
# File 'lib/exception_notifier/rake/rake.rb', line 10

def self.configured?
  !@notifier_options.empty?
end

.default_notifier_optionsObject



29
30
31
32
33
# File 'lib/exception_notifier/rake/rake.rb', line 29

def self.default_notifier_options
  {
    :background_sections => %w(rake backtrace),
  }
end

.maybe_deliver_notification(exception, data = {}) ⇒ Object

Deliver a notification about the given exception by email, in case notifications have been configured. The additional data hash will be passed through to ExceptionNotifier’s data hash and will be availble in templates.



43
44
45
46
47
48
49
50
51
52
# File 'lib/exception_notifier/rake/rake.rb', line 43

def self.maybe_deliver_notification(exception, data={})
  if configured?
    options = notifier_options
    if !data.empty?
      options = options.dup
      options[:data] = data.merge(options[:data] || {})
    end
    ExceptionNotifier.notify_exception(exception, options)
  end
end

.notifier_optionsObject



35
36
37
# File 'lib/exception_notifier/rake/rake.rb', line 35

def self.notifier_options
  @notifier_options
end

.reset_for_testObject



54
55
56
# File 'lib/exception_notifier/rake/rake.rb', line 54

def self.reset_for_test
  @notifier_options = {}
end