Class: ExceptionNotifier::Notifier

Inherits:
ActionMailer::Base
  • Object
show all
Defined in:
lib/exception_notifier/notifier.rb

Defined Under Namespace

Classes: MissingController

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.default_background_sectionsObject



43
44
45
# File 'lib/exception_notifier/notifier.rb', line 43

def default_background_sections
  @default_background_sections || %w(backtrace data)
end

.default_email_formatObject



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

def default_email_format
  @default_email_format || :text
end

.default_email_headersObject



59
60
61
# File 'lib/exception_notifier/notifier.rb', line 59

def default_email_headers
  @default_email_headers || {}
end

.default_email_prefixObject



31
32
33
# File 'lib/exception_notifier/notifier.rb', line 31

def default_email_prefix
  @default_email_prefix || "[ERROR] "
end

.default_exception_recipientsObject



27
28
29
# File 'lib/exception_notifier/notifier.rb', line 27

def default_exception_recipients
  @default_exception_recipients || []
end

.default_normalize_subjectObject



51
52
53
# File 'lib/exception_notifier/notifier.rb', line 51

def default_normalize_subject
  @default_normalize_prefix || false
end

.default_sectionsObject



39
40
41
# File 'lib/exception_notifier/notifier.rb', line 39

def default_sections
  @default_sections || %w(request session environment backtrace)
end

.default_sender_addressObject



23
24
25
# File 'lib/exception_notifier/notifier.rb', line 23

def default_sender_address
  @default_sender_address || %("Exception Notifier" <[email protected]>)
end

.default_smtp_settingsObject



55
56
57
# File 'lib/exception_notifier/notifier.rb', line 55

def default_smtp_settings
  @default_smtp_settings || nil
end

.default_verbose_subjectObject



47
48
49
# File 'lib/exception_notifier/notifier.rb', line 47

def default_verbose_subject
  @default_verbose_subject.nil? || @default_verbose_subject
end

Class Method Details

.default_optionsObject



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/exception_notifier/notifier.rb', line 63

def default_options
  { :sender_address => default_sender_address,
    :exception_recipients => default_exception_recipients,
    :email_prefix => default_email_prefix,
    :email_format => default_email_format,
    :sections => default_sections,
    :background_sections => default_background_sections,
    :verbose_subject => default_verbose_subject,
    :normalize_subject => default_normalize_subject,
    :template_path => mailer_name,
    :smtp_settings => default_smtp_settings,
    :email_headers => default_email_headers }
end

.normalize_digits(string) ⇒ Object



77
78
79
# File 'lib/exception_notifier/notifier.rb', line 77

def normalize_digits(string)
  string.gsub(/[0-9]+/, 'N')
end

Instance Method Details

#background_exception_notification(exception, options = {}) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/exception_notifier/notifier.rb', line 103

def background_exception_notification(exception, options={})
  load_custom_views

  if @notifier = Rails.application.config.middleware.detect{ |x| x.klass == ExceptionNotifier }
    @options   = options.reverse_merge(@notifier.args.first || {}).reverse_merge(self.class.default_options)
    @exception = exception
    @backtrace = exception.backtrace || []
    @sections  = @options[:background_sections]
    @data      = options[:data] || {}

    compose_email
  end
end

#exception_notification(env, exception, options = {}) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/exception_notifier/notifier.rb', line 87

def exception_notification(env, exception, options={})
  load_custom_views

  @env        = env
  @exception  = exception
  @options    = options.reverse_merge(env['exception_notifier.options'] || {}).reverse_merge(self.class.default_options)
  @kontroller = env['action_controller.instance'] || MissingController.new
  @request    = ActionDispatch::Request.new(env)
  @backtrace  = exception.backtrace ? clean_backtrace(exception) : []
  @sections   = @options[:sections]
  @data       = (env['exception_notifier.exception_data'] || {}).merge(options[:data] || {})
  @sections   = @sections + %w(data) unless @data.empty?
  
  compose_email
end