super_exception_notifier 3.0.16 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.txt +5 -0
- data/README.md +2 -1
- data/Rakefile +14 -2
- data/lib/exception_notification/exception_notifiable.rb +10 -7
- data/lib/exception_notification/helpful_hashes.rb +3 -3
- data/lib/exception_notification/notifiable.rb +1 -1
- data/lib/exception_notification/notifiable_helper.rb +13 -13
- data/lib/super_exception_notifier/version.rb +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53acfe8d674c8785ece68fa6c6100d900cb36de7
|
4
|
+
data.tar.gz: 5a20baccf5fefd0ddc7b11a83be5a195e56e9e76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a6d8325445fb7f4d04be4f09aee510e641b917526ec2d678b5f4cbb01675a233285fb865912cf34ff66d40aed4cc3aed11ed3b9cdba9498518b9495d73ae2bf
|
7
|
+
data.tar.gz: 87ec579a8b51aefae4db68acfb9b15e1b2d32951c429cf87214905206152d36b87c68741e6902a5cfe831a77e3c0357434418aab9b5023233b4aa68aff980df0
|
data/CHANGELOG.txt
CHANGED
data/README.md
CHANGED
@@ -171,7 +171,8 @@ For example:
|
|
171
171
|
## References
|
172
172
|
|
173
173
|
* [Source Code](http://github.com/pboling/exception_notification)
|
174
|
-
* [A fork
|
174
|
+
* [A popular fork/rewrite of this fork](https://github.com/bmpercy/wrangler)
|
175
|
+
* [An old fork of my original source on Google Code](https://github.com/vitaliel/super_exception_notifier)
|
175
176
|
* [The Original Source on Google Code](http://super-exception-notifier.googlecode.com/svn/trunk/super_exception_notifier/)
|
176
177
|
* [Getting it to work on Stack Overflow & my response](http://stackoverflow.com/questions/1738017/getting-super-exception-notifier-to-work)
|
177
178
|
* [Getting it to work on PasteBin](http://pastebin.com/pyHQjN84)
|
data/Rakefile
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require 'rake'
|
4
4
|
require 'rake/testtask'
|
5
|
-
require 'rake/rdoctask'
|
6
5
|
|
7
6
|
desc 'Default: run unit tests.'
|
8
7
|
task :default => :test
|
@@ -14,6 +13,16 @@ Rake::TestTask.new do |t|
|
|
14
13
|
t.verbose = true
|
15
14
|
end
|
16
15
|
|
16
|
+
namespace :test do
|
17
|
+
desc 'Test against all supported Rails versions'
|
18
|
+
task :all do
|
19
|
+
%w(2.0.x 2.1.x 2.2.x 2.3.x).each do |version|
|
20
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{version}' bundle --quiet"
|
21
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{version}' bundle exec rake test"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
17
26
|
require 'reek/rake/task'
|
18
27
|
Reek::Rake::Task.new do |t|
|
19
28
|
t.fail_on_error = true
|
@@ -27,9 +36,12 @@ RoodiTask.new do |t|
|
|
27
36
|
t.verbose = false
|
28
37
|
end
|
29
38
|
|
39
|
+
|
30
40
|
desc 'Generate documentation for exception_notifiable gem.'
|
31
41
|
require File.expand_path('../lib/super_exception_notifier/version', __FILE__)
|
32
|
-
|
42
|
+
require 'rdoc'
|
43
|
+
require 'rdoc/task'
|
44
|
+
RDoc::Task.new do |rdoc|
|
33
45
|
rdoc.rdoc_dir = 'rdoc'
|
34
46
|
rdoc.title = "exception_notifiable #{SuperExceptionNotifier::VERSION}"
|
35
47
|
rdoc.options << '--line-numbers' << '--inline-source'
|
@@ -10,14 +10,14 @@ module ExceptionNotification::ExceptionNotifiable
|
|
10
10
|
|
11
11
|
# Sets up an alias chain to catch exceptions when Rails does
|
12
12
|
#This is what makes it all work with Hoptoad or other exception catchers.
|
13
|
-
#
|
14
|
-
#
|
13
|
+
#base.send(:alias_method, :rescue_action_locally_without_sen_handler, :rescue_action_locally)
|
14
|
+
#base.send(:alias_method, :rescue_action_locally, :rescue_action_locally_with_sen_handler)
|
15
15
|
|
16
16
|
#Alias method chaining doesn't work here because it would trigger a double render error.
|
17
17
|
# Sets up an alias chain to catch exceptions when Rails does
|
18
18
|
#This is what makes it all work with Hoptoad or other exception catchers.
|
19
|
-
#
|
20
|
-
#
|
19
|
+
#base.send(:alias_method, :rescue_action_in_public_without_exception_notifiable, :rescue_action_in_public)
|
20
|
+
#base.send(:alias_method, :rescue_action_in_public, :rescue_action_in_public_with_exception_notifiable)
|
21
21
|
|
22
22
|
# Adds the following class attributes to the classes that include ExceptionNotifiable
|
23
23
|
# HTTP status codes and what their 'English' status message is
|
@@ -90,7 +90,7 @@ module ExceptionNotification::ExceptionNotifiable
|
|
90
90
|
def environment_is_noisy?
|
91
91
|
self.class.exception_notifiable_noisy_environments.include?(Rails.env)
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
def notification_level_sends_email?
|
95
95
|
self.class.exception_notifiable_notification_level.include?(:email)
|
96
96
|
end
|
@@ -115,7 +115,8 @@ module ExceptionNotification::ExceptionNotifiable
|
|
115
115
|
# Or when the error occurs somewhere without a subsequent render (eg. method calls in console)
|
116
116
|
def rescue_with_handler(exception)
|
117
117
|
to_return = super
|
118
|
-
|
118
|
+
# Not sure how to do this. We aren't supposed to rely on the return value of the super handler.
|
119
|
+
#if to_return
|
119
120
|
verbose = self.class.exception_notifiable_verbose && respond_to?(:logger) && !logger.nil?
|
120
121
|
logger.info("[RESCUE STYLE] rescue_with_handler") if verbose
|
121
122
|
data = get_exception_data
|
@@ -133,7 +134,7 @@ module ExceptionNotification::ExceptionNotifiable
|
|
133
134
|
# Send Web Hook requests
|
134
135
|
ExceptionNotification::HooksNotifier.deliver_exception_to_web_hooks(ExceptionNotification::Notifier.config, exception, self, request, data, the_blamed) if send_web_hooks
|
135
136
|
pass_it_on(exception, ENV, verbose)
|
136
|
-
end
|
137
|
+
#end
|
137
138
|
to_return
|
138
139
|
end
|
139
140
|
|
@@ -141,6 +142,7 @@ module ExceptionNotification::ExceptionNotifiable
|
|
141
142
|
# any custom processing that is defined with Rails 2's exception helpers.
|
142
143
|
# When the action being executed is letting SEN handle the exception completely
|
143
144
|
def rescue_action_in_public(exception)
|
145
|
+
logger.info "rescue_action_in_public"
|
144
146
|
# If the error class is NOT listed in the rails_error_class hash then we get a generic 500 error:
|
145
147
|
# OTW if the error class is listed, but has a blank code or the code is == '200' then we get a custom error layout rendered
|
146
148
|
# OTW the error class is listed!
|
@@ -156,6 +158,7 @@ module ExceptionNotification::ExceptionNotifiable
|
|
156
158
|
end
|
157
159
|
|
158
160
|
def notify_and_render_error_template(status_cd, request, exception, file_path, verbose = false)
|
161
|
+
logger.info "notify_and_render_error_template"
|
159
162
|
status = self.class.http_status_codes[status_cd] ? status_cd + " " + self.class.http_status_codes[status_cd] : status_cd
|
160
163
|
data = get_exception_data
|
161
164
|
#We only send email if it has been configured in environment
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#Released under the MIT license
|
3
3
|
|
4
4
|
module ExceptionNotification::HelpfulHashes
|
5
|
-
|
5
|
+
SILENT_EXCEPTIONS = begin
|
6
6
|
noiseless = []
|
7
7
|
noiseless << ActiveRecord::RecordNotFound if defined?(ActiveRecord)
|
8
8
|
if defined?(ActionController)
|
@@ -11,7 +11,7 @@ module ExceptionNotification::HelpfulHashes
|
|
11
11
|
noiseless << ActionController::RoutingError
|
12
12
|
noiseless << ActionController::MethodNotAllowed
|
13
13
|
end
|
14
|
-
|
14
|
+
noiseless
|
15
15
|
end
|
16
16
|
|
17
17
|
# TODO: use ActionController::StatusCodes
|
@@ -27,7 +27,7 @@ module ExceptionNotification::HelpfulHashes
|
|
27
27
|
"500" => "Internal Server Error",
|
28
28
|
"501" => "Not Implemented",
|
29
29
|
"503" => "Service Unavailable"
|
30
|
-
}
|
30
|
+
}
|
31
31
|
|
32
32
|
def codes_for_error_classes
|
33
33
|
#TODO: Format whitespace
|
@@ -55,7 +55,7 @@ module ExceptionNotification::Notifiable
|
|
55
55
|
private
|
56
56
|
|
57
57
|
def environment_is_noisy?
|
58
|
-
self.notifiable_noisy_environments.include?(Rails.env)
|
58
|
+
self.class.notifiable_noisy_environments.include?(Rails.env) if defined?(Rails)
|
59
59
|
end
|
60
60
|
|
61
61
|
def notification_level_sends_email?
|
@@ -27,29 +27,29 @@ module ExceptionNotification::NotifiableHelper
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request = nil, the_blamed = nil, rejected_sections = nil)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
puts("[EXCEPTION] #{exception}")
|
31
|
+
puts("[EXCEPTION CLASS] #{exception.class}")
|
32
|
+
puts("[EXCEPTION STATUS_CD] #{status_cd}")
|
33
|
+
puts("[ERROR LAYOUT] #{self.class.error_layout}") if self.class.respond_to?(:error_layout)
|
34
|
+
puts("[ERROR VIEW PATH] #{ExceptionNotification::Notifier.config[:view_path]}") if !ExceptionNotification::Notifier.nil? && !ExceptionNotification::Notifier.config[:view_path].nil?
|
35
|
+
puts("[ERROR FILE PATH] #{file_path.inspect}")
|
36
|
+
puts("[ERROR EMAIL] #{send_email ? "YES" : "NO"}")
|
37
|
+
puts("[ERROR WEB HOOKS] #{send_web_hooks ? "YES" : "NO"}")
|
38
|
+
puts("[THE BLAMED] #{the_blamed}") unless the_blamed.blank?
|
39
|
+
puts("[SECTIONS] #{ExceptionNotification::Notifier.sections_for_email(rejected_sections, request).inspect}")
|
40
40
|
req = request ? " for request_uri=#{request.request_uri}" : ""
|
41
41
|
logger.error("render_error(#{status_cd}, #{self.class.http_status_codes[status_cd]}) invoked#{req}") if self.class.respond_to?(:http_status_codes)
|
42
42
|
end
|
43
43
|
|
44
44
|
def perform_exception_notify_mailing(exception, data, request = nil, the_blamed = nil, verbose = false, rejected_sections = nil)
|
45
45
|
if ExceptionNotification::Notifier.config[:exception_recipients].blank?
|
46
|
-
|
46
|
+
puts("[EMAIL NOTIFICATION] ExceptionNotification::Notifier.config[:exception_recipients] is blank, notification cancelled!") if verbose
|
47
47
|
else
|
48
48
|
class_name = self.respond_to?(:controller_name) ? self.controller_name : self.to_s
|
49
49
|
method_name = self.respond_to?(:action_name) ? self.action_name : get_method_name
|
50
50
|
ExceptionNotification::Notifier.deliver_exception_notification(exception, class_name, method_name,
|
51
51
|
request, data, the_blamed, rejected_sections)
|
52
|
-
|
52
|
+
puts("[EMAIL NOTIFICATION] Sent") if verbose
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -65,7 +65,7 @@ module ExceptionNotification::NotifiableHelper
|
|
65
65
|
def should_notify_on_exception?(exception, status_cd = nil, verbose = false)
|
66
66
|
# don't notify (email or web hooks) on exceptions raised locally
|
67
67
|
verbose && ExceptionNotification::Notifier.config[:skip_local_notification] && is_local? ?
|
68
|
-
|
68
|
+
puts("[NOTIFY LOCALLY] NO") :
|
69
69
|
nil
|
70
70
|
return false if ExceptionNotification::Notifier.config[:skip_local_notification] && is_local?
|
71
71
|
# don't notify (email or web hooks) exceptions raised that match ExceptionNotifiable.notifiable_silent_exceptions
|
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: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: "2.
|
49
|
+
version: "2.0"
|
50
50
|
- - <
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: "3"
|
@@ -69,10 +69,7 @@ dependencies:
|
|
69
69
|
requirements:
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
73
|
-
- - <
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: "0.9"
|
72
|
+
version: 10.1.1
|
76
73
|
type: :development
|
77
74
|
version_requirements: *id005
|
78
75
|
- !ruby/object:Gem::Dependency
|