super_exception_notifier 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 2
3
3
  :minor: 0
4
- :patch: 1
4
+ :patch: 2
@@ -102,9 +102,11 @@ module ExceptionNotifiable
102
102
  #We only send web hooks if they've been configured in environment
103
103
  send_web_hooks = should_web_hook_on_exception?(exception, status_code, verbose)
104
104
  the_blamed = ExceptionNotifier.config[:git_repo_path].nil? ? nil : lay_blame(exception)
105
- verbose_output(exception, status_code, "rescued by handler", send_email, send_web_hooks, nil, the_blamed) if verbose
106
- # Send the exception notificaiton email
107
- perform_exception_notify_mailing(exception, data, nil, the_blamed, verbose) if send_email
105
+ rejected_sections = %w(request session)
106
+ # Debugging output
107
+ verbose_output(exception, status_code, "rescued by handler", send_email, send_web_hooks, nil, the_blamed, rejected_sections) if verbose
108
+ # Send the exception notification email
109
+ perform_exception_notify_mailing(exception, data, nil, the_blamed, verbose, rejected_sections) if send_email
108
110
  # Send Web Hook requests
109
111
  HooksNotifier.deliver_exception_to_web_hooks(ExceptionNotifier.config, exception, self, request, data, the_blamed) if send_web_hooks
110
112
  end
@@ -134,13 +136,13 @@ module ExceptionNotifiable
134
136
  #We only send web hooks if they've been configured in environment
135
137
  send_web_hooks = should_web_hook_on_exception?(exception, status_cd, verbose)
136
138
  the_blamed = ExceptionNotifier.config[:git_repo_path].nil? ? nil : lay_blame(exception)
137
-
139
+ rejected_sections = request.nil? ? %w(request session) : []
138
140
  # Debugging output
139
- verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request, the_blamed) if verbose
140
-
141
+ verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request, the_blamed, rejected_sections) if verbose
141
142
  #TODO: is _rescue_action something from rails 3?
142
143
  #if !(self.controller_name == 'application' && self.action_name == '_rescue_action')
143
- perform_exception_notify_mailing(exception, data, request, the_blamed, verbose) if send_email
144
+ # Send the exception notification email
145
+ perform_exception_notify_mailing(exception, data, request, the_blamed, verbose, rejected_sections) if send_email
144
146
  # Send Web Hook requests
145
147
  HooksNotifier.deliver_exception_to_web_hooks(ExceptionNotifier.config, exception, self, request, data, the_blamed) if send_web_hooks
146
148
 
@@ -53,6 +53,11 @@ class ExceptionNotifier < ActionMailer::Base
53
53
  filenames
54
54
  end
55
55
 
56
+ def self.sections_for_email(rejected_sections, request)
57
+ rejected_sections = rejected_sections.nil? ? request.nil? ? %w(request session) : [] : rejected_sections
58
+ rejected_sections.empty? ? config[:sections] : config[:sections].reject{|s| rejected_sections.include?(s) }
59
+ end
60
+
56
61
  # Converts Stringified Class Names to acceptable filename handles with underscores
57
62
  def self.filenamify(str)
58
63
  str.delete(':').gsub( /([A-Za-z])([A-Z])/, '\1' << '_' << '\2').downcase
@@ -110,8 +115,8 @@ class ExceptionNotifier < ActionMailer::Base
110
115
  end
111
116
  end
112
117
 
113
- def exception_notification(exception, class_name = nil, method_name = nil, request = nil, data={}, the_blamed=nil)
114
- body_hash = error_environment_data_hash(exception, class_name, method_name, request, data, the_blamed)
118
+ def exception_notification(exception, class_name = nil, method_name = nil, request = nil, data = {}, the_blamed = nil, rejected_sections = nil)
119
+ body_hash = error_environment_data_hash(exception, class_name, method_name, request, data, the_blamed, rejected_sections)
115
120
  #Prefer to have custom, potentially HTML email templates available
116
121
  #content_type "text/plain"
117
122
  recipients config[:exception_recipients]
@@ -123,30 +128,17 @@ class ExceptionNotifier < ActionMailer::Base
123
128
  body body_hash
124
129
  end
125
130
 
126
- def background_exception_notification(exception, data = {}, the_blamed = nil)
127
- exception_notification(exception, nil, nil, data, the_blamed)
131
+ def background_exception_notification(exception, data = {}, the_blamed = nil, rejected_sections = %w(request session))
132
+ exception_notification(exception, nil, nil, nil, data, the_blamed, rejected_sections)
128
133
  end
129
134
 
130
- def rake_exception_notification(exception, task, data={})
131
- content_type "text/plain"
132
-
133
- subject "#{email_prefix}#{task.name} (#{exception.class}) #{exception.message.inspect}"
134
-
135
- recipients exception_recipients
136
- from sender_address
137
-
138
- body data.merge({ :task => task,
139
- :exception => exception,
140
- :backtrace => sanitize_backtrace(exception.backtrace),
141
- :rails_root => rails_root,
142
- :data => data,
143
- :sections => sections.reject{|s| %w(request session).include?(s) }
144
- })
135
+ def rake_exception_notification(exception, task, data={}, the_blamed = nil, rejected_sections = %w(request session))
136
+ exception_notification(exception, "", "#{task.name}", nil, data, the_blamed, rejected_sections)
145
137
  end
146
138
 
147
139
  private
148
140
 
149
- def error_environment_data_hash(exception, class_name = nil, method_name = nil, request = nil, data={}, the_blamed=nil)
141
+ def error_environment_data_hash(exception, class_name = nil, method_name = nil, request = nil, data = {}, the_blamed = nil, rejected_sections = nil)
150
142
  data.merge!({
151
143
  :exception => exception,
152
144
  :backtrace => sanitize_backtrace(exception.backtrace),
@@ -159,17 +151,16 @@ class ExceptionNotifier < ActionMailer::Base
159
151
  data.merge!({:method_name => method_name}) if method_name
160
152
  if class_name && method_name
161
153
  data.merge!({:location => "#{class_name}##{method_name}"})
154
+ elsif method_name
155
+ data.merge!({:location => "#{method_name}"})
162
156
  else
163
157
  data.merge!({:location => sanitize_backtrace([exception.backtrace.first]).first})
164
158
  end
165
159
  if request
166
160
  data.merge!({:request => request})
167
161
  data.merge!({:host => (request.env['HTTP_X_REAL_IP'] || request.env["HTTP_X_FORWARDED_HOST"] || request.env["HTTP_HOST"])})
168
- data.merge!({:sections => config[:sections]})
169
- else
170
- # TODO: with refactoring in the view structure, the environment section could show useful ENV data even without a request?
171
- data.merge!({:sections => config[:sections] - %w(request session environment)})
172
162
  end
163
+ data.merge!({:sections => ExceptionNotifier.sections_for_email(rejected_sections, request)})
173
164
  return data
174
165
  end
175
166
 
data/lib/notifiable.rb CHANGED
@@ -76,9 +76,10 @@ module Notifiable
76
76
  #We only send web hooks if they've been configured in environment
77
77
  send_web_hooks = should_web_hook_on_exception?(exception, status_code, verbose)
78
78
  the_blamed = ExceptionNotifier.config[:git_repo_path].nil? ? nil : lay_blame(exception)
79
- verbose_output(exception, status_code, "rescued by handler", send_email, send_web_hooks, nil, the_blamed) if verbose
80
- # Send the exception notificaiton email
81
- perform_exception_notify_mailing(exception, data, nil, the_blamed, verbose) if send_email
79
+ rejected_sections = %w(request session)
80
+ verbose_output(exception, status_code, "rescued by handler", send_email, send_web_hooks, nil, the_blamed, rejected_sections) if verbose
81
+ # Send the exception notification email
82
+ perform_exception_notify_mailing(exception, data, nil, the_blamed, verbose, rejected_sections) if send_email
82
83
  # Send Web Hook requests
83
84
  HooksNotifier.deliver_exception_to_web_hooks(ExceptionNotifier.config, exception, self, request, data, the_blamed) if send_web_hooks
84
85
  end
@@ -27,7 +27,7 @@ module SuperExceptionNotifier
27
27
  end
28
28
  end
29
29
 
30
- def verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request = nil, the_blamed = nil)
30
+ def verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request = nil, the_blamed = nil, rejected_sections = nil)
31
31
  puts "[EXCEPTION] #{exception}"
32
32
  puts "[EXCEPTION CLASS] #{exception.class}"
33
33
  puts "[EXCEPTION STATUS_CD] #{status_cd}"
@@ -38,18 +38,19 @@ module SuperExceptionNotifier
38
38
  puts "[ERROR WEB HOOKS] #{send_web_hooks ? "YES" : "NO"}"
39
39
  puts "[COMPAT MODE] #{ExceptionNotifierHelper::COMPAT_MODE ? "YES" : "NO"}"
40
40
  puts "[THE BLAMED] #{the_blamed}"
41
+ puts "[SECTIONS] #{ExceptionNotifier.sections_for_email(rejected_sections, request)}"
41
42
  req = request ? " for request_uri=#{request.request_uri} and env=#{request.env.inspect}" : ""
42
43
  logger.error("render_error(#{status_cd}, #{self.class.http_status_codes[status_cd]}) invoked#{req}") if self.class.respond_to?(:http_status_codes) && !logger.nil?
43
44
  end
44
45
 
45
- def perform_exception_notify_mailing(exception, data, request = nil, the_blamed = nil, verbose = false)
46
+ def perform_exception_notify_mailing(exception, data, request = nil, the_blamed = nil, verbose = false, rejected_sections = nil)
46
47
  if ExceptionNotifier.config[:exception_recipients].blank?
47
48
  puts "[EMAIL NOTIFICATION] ExceptionNotifier.config[:exception_recipients] is blank, notification cancelled!" if verbose
48
49
  else
49
50
  class_name = self.respond_to?(:controller_name) ? self.controller_name : self.to_s
50
51
  method_name = self.respond_to?(:action_name) ? self.action_name : get_method_name
51
52
  ExceptionNotifier.deliver_exception_notification(exception, class_name, method_name,
52
- request, data, the_blamed)
53
+ request, data, the_blamed, rejected_sections)
53
54
  puts "[EMAIL NOTIFICATION] Sent" if verbose
54
55
  end
55
56
  end
@@ -0,0 +1,6 @@
1
+ A <%= @exception.class %> occurred in <%= @location %>:
2
+
3
+ <%= @exception.message %>
4
+ <%= @backtrace.first %>
5
+
6
+ <%= @sections.map { |section| render_section(section) }.join %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_exception_notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2009-10-22 00:00:00 -04:00
16
+ date: 2009-10-23 00:00:00 -04:00
17
17
  default_executable:
18
18
  dependencies: []
19
19
 
@@ -81,6 +81,7 @@ files:
81
81
  - views/exception_notifier/_title.html.erb
82
82
  - views/exception_notifier/background_exception_notification.text.plain.erb
83
83
  - views/exception_notifier/exception_notification.text.plain.erb
84
+ - views/exception_notifier/rake_exception_notification.text.plain.erb
84
85
  has_rdoc: true
85
86
  homepage: http://github.com/pboling/exception_notification
86
87
  licenses: []