super_exception_notifier 2.0.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.
Files changed (44) hide show
  1. data/MIT-LICENSE +21 -0
  2. data/README.rdoc +528 -0
  3. data/VERSION.yml +4 -0
  4. data/init.rb +1 -0
  5. data/lib/exception_notifiable.rb +175 -0
  6. data/lib/exception_notifier.rb +185 -0
  7. data/lib/exception_notifier_helper.rb +60 -0
  8. data/lib/notifiable.rb +91 -0
  9. data/lib/super_exception_notifier/custom_exception_classes.rb +16 -0
  10. data/lib/super_exception_notifier/custom_exception_methods.rb +50 -0
  11. data/lib/super_exception_notifier/deprecated_methods.rb +60 -0
  12. data/lib/super_exception_notifier/git_blame.rb +52 -0
  13. data/lib/super_exception_notifier/helpful_hashes.rb +66 -0
  14. data/lib/super_exception_notifier/hooks_notifier.rb +55 -0
  15. data/lib/super_exception_notifier/notifiable_helper.rb +79 -0
  16. data/rails/app/views/exception_notifiable/400.html +5 -0
  17. data/rails/app/views/exception_notifiable/403.html +6 -0
  18. data/rails/app/views/exception_notifiable/404.html +6 -0
  19. data/rails/app/views/exception_notifiable/405.html +6 -0
  20. data/rails/app/views/exception_notifiable/410.html +7 -0
  21. data/rails/app/views/exception_notifiable/418.html +6 -0
  22. data/rails/app/views/exception_notifiable/422.html +5 -0
  23. data/rails/app/views/exception_notifiable/423.html +6 -0
  24. data/rails/app/views/exception_notifiable/501.html +8 -0
  25. data/rails/app/views/exception_notifiable/503.html +6 -0
  26. data/rails/app/views/exception_notifiable/method_disabled.html.erb +6 -0
  27. data/rails/init.rb +25 -0
  28. data/tasks/notified_task.rake +15 -0
  29. data/test/exception_notifiable_test.rb +34 -0
  30. data/test/exception_notifier_helper_test.rb +76 -0
  31. data/test/exception_notifier_test.rb +41 -0
  32. data/test/exception_notify_functional_test.rb +139 -0
  33. data/test/mocks/controllers.rb +82 -0
  34. data/test/notifiable_test.rb +79 -0
  35. data/test/test_helper.rb +32 -0
  36. data/views/exception_notifier/_backtrace.html.erb +1 -0
  37. data/views/exception_notifier/_environment.html.erb +14 -0
  38. data/views/exception_notifier/_inspect_model.html.erb +16 -0
  39. data/views/exception_notifier/_request.html.erb +8 -0
  40. data/views/exception_notifier/_session.html.erb +6 -0
  41. data/views/exception_notifier/_title.html.erb +3 -0
  42. data/views/exception_notifier/background_exception_notification.text.plain.erb +10 -0
  43. data/views/exception_notifier/exception_notification.text.plain.erb +15 -0
  44. metadata +119 -0
@@ -0,0 +1,32 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+
4
+ require 'active_support'
5
+ require 'actionmailer'
6
+ require 'active_record'
7
+
8
+ #just requiring active record wasn't loading classes soon enough for SILENT_EXCEPTIONS
9
+ ActiveRecord::Base
10
+
11
+ require 'action_controller'
12
+ require 'action_controller/test_case'
13
+ require 'action_controller/test_process'
14
+
15
+ #just requiring action controller wasn't loading classes soon enough for SILENT_EXCEPTIONS
16
+ ActionController::Base
17
+
18
+ RAILS_ROOT = '.' unless defined?(RAILS_ROOT)
19
+ RAILS_ENV = 'test' unless defined?(RAILS_ENV)
20
+ RAILS_DEFAULT_LOGGER = Logger.new(StringIO.new) unless defined?(RAILS_DEFAULT_LOGGER)
21
+ #$:.unshift File.join(File.dirname(__FILE__), '../lib')
22
+
23
+ require File.join(File.dirname(__FILE__), "..", "init")
24
+
25
+ ExceptionNotifier.configure_exception_notifier do |config|
26
+ # If left empty web hooks will not be engaged
27
+ config[:web_hooks] = []
28
+ config[:exception_recipients] = ["test.errors@example.com"]
29
+ config[:view_path] = File.join(File.dirname(__FILE__), "mocks")
30
+ config[:skip_local_notification] = false
31
+ config[:notify_other_errors] = true
32
+ end
@@ -0,0 +1 @@
1
+ <%= @backtrace.join "\n" %>
@@ -0,0 +1,14 @@
1
+ <% if @request -%>
2
+ <% max = @request.env.keys.max { |a,b| a.length <=> b.length } -%>
3
+ <% @request.env.keys.sort.each do |key| -%>
4
+ * <%= "%-*s: %s" % [max.length, key, filter_sensitive_post_data_from_env(key, @request.env[key].to_s.strip)] %>
5
+ <% end -%>
6
+ <% end -%>
7
+ <% if @data -%>
8
+ <% @data.each do |key, value| -%>
9
+ * <%= key %>: <%= value %>
10
+ <% end -%>
11
+ <% end -%>
12
+
13
+ * Process: <%= $$ %>
14
+ * Server : <%= `hostname -s`.chomp %>
@@ -0,0 +1,16 @@
1
+ <% if show_attributes -%>
2
+ [attributes]
3
+ <% attrs = inspect_model.attributes -%>
4
+ <% max = attrs.keys.max { |a,b| a.length <=> b.length } -%>
5
+ <% attrs.keys.sort.each do |attr| -%>
6
+ * <%= "%*-s: %s" % [max.length, attr, object_to_yaml(attrs[attr]).gsub(/\n/, "\n ").strip] %>
7
+ <% end -%>
8
+ <% end -%>
9
+
10
+ <% if show_instance_variables -%>
11
+ [instance variables]
12
+ <% inspect_model.instance_variables.sort.each do |variable| -%>
13
+ <%- next if variable == "@attributes" -%>
14
+ * <%= variable %>: <%= inspect_value(inspect_model.instance_variable_get(variable)) %>
15
+ <% end -%>
16
+ <% end -%>
@@ -0,0 +1,8 @@
1
+ <% if @request -%>
2
+ * URL : <%= @request.protocol %><%= @host %><%= @request.request_uri %>
3
+ * Method : <%= @request.method.to_s.upcase %>
4
+ * IP address: <%= @request.env['HTTP_X_REAL_IP'] ||@request.env["HTTP_X_FORWARDED_FOR"] || @request.env["REMOTE_ADDR"] %>
5
+ * Parameters: <%= filter_sensitive_post_data_parameters(@request.parameters).inspect %>
6
+ <% end -%>
7
+ * Rails root: <%= @rails_root %>
8
+
@@ -0,0 +1,6 @@
1
+ <%
2
+ @request.session.instance_variable_set(:@session_id, @request.session_options[:id]) if @request.session.instance_variable_get(:@session_id).nil?
3
+ @request.session.instance_variable_set(:@data, @request.session.to_hash) if @request.session.instance_variable_get(:@data).nil?
4
+ %>
5
+ * session id: <%= @request.session.instance_variable_get(:@session_id).inspect %>
6
+ * data: <%= PP.pp(@request.session.instance_variable_get(:@data),"").gsub(/\n/, "\n ").strip %>
@@ -0,0 +1,3 @@
1
+ -------------------------------
2
+ <%= title.to_s.humanize %>:
3
+ -------------------------------
@@ -0,0 +1,10 @@
1
+ A <%= @exception.class %> occurred in <%= @controller_name %>#<%= @controller_action_name %>:
2
+
3
+ <%= @exception.message %>
4
+ <%= @backtrace.first %>
5
+
6
+ <% if @data[:info] -%>
7
+ <%=@data[:info].to_yaml%>
8
+ <% end -%>
9
+
10
+ <%= @sections.map { |section| render_section(section) }.join %>
@@ -0,0 +1,15 @@
1
+ <% unless @request.nil? -%>
2
+ <%= @request.protocol %><%= @host %><%= @request.request_uri %>
3
+ <% end -%>
4
+ A <%= @exception.class %> occurred in <%= @location %>:
5
+ <%= @exception.message %>
6
+ <%= @backtrace.first %>
7
+
8
+ <% if @data[:info] -%>
9
+ <%=@data[:info].to_yaml%>
10
+ <% end -%>
11
+
12
+ <% unless @the_blamed.nil? || @the_blamed[:author].nil? %>
13
+ Git Blame: '<%=@the_blamed[:author]%>' last modified line #<%=@the_blamed[:line]%> in <%=@the_blamed[:file]%>
14
+ <% end%>
15
+ <%= @sections.map { |section| render_section(section) }.join %>
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: super_exception_notifier
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Boling
8
+ - Scott Windsor
9
+ - Ismael Celis
10
+ - Jacques Crocker
11
+ - Jamis Buck
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2009-10-22 00:00:00 -04:00
17
+ default_executable:
18
+ dependencies: []
19
+
20
+ description: |-
21
+ Allows customization of:
22
+ * Specify which level of notification you would like with an array of optional styles of notification (email, webhooks)
23
+ * the sender address of the email
24
+ * the recipient addresses
25
+ * the text used to prefix the subject line
26
+ * the HTTP status codes to notify for
27
+ * the error classes to send emails for
28
+ * alternatively, the error classes to not notify for
29
+ * whether to send error emails or just render without sending anything
30
+ * the HTTP status and status code that gets rendered with specific errors
31
+ * the view path to the error page templates
32
+ * custom errors, with custom error templates
33
+ * define error layouts at application or controller level, or use the controller's own default layout, or no layout at all
34
+ * get error notification for errors that occur in the console, using notifiable method
35
+ * Override the gem's handling and rendering with explicit rescue statements inline.
36
+ * Hooks into `git blame` output so you can get an idea of who (may) have introduced the bug
37
+ * Hooks into other website services (e.g. you can send exceptions to to Switchub.com)
38
+ * Can notify of errors occurring in any class/method using notifiable { method }
39
+ * Can notify of errors in Rake tasks using NotifiedTask.new instead of task
40
+ email: peter.boling@gmail.com
41
+ executables: []
42
+
43
+ extensions: []
44
+
45
+ extra_rdoc_files:
46
+ - README.rdoc
47
+ files:
48
+ - MIT-LICENSE
49
+ - README.rdoc
50
+ - VERSION.yml
51
+ - init.rb
52
+ - lib/exception_notifiable.rb
53
+ - lib/exception_notifier.rb
54
+ - lib/exception_notifier_helper.rb
55
+ - lib/notifiable.rb
56
+ - lib/super_exception_notifier/custom_exception_classes.rb
57
+ - lib/super_exception_notifier/custom_exception_methods.rb
58
+ - lib/super_exception_notifier/deprecated_methods.rb
59
+ - lib/super_exception_notifier/git_blame.rb
60
+ - lib/super_exception_notifier/helpful_hashes.rb
61
+ - lib/super_exception_notifier/hooks_notifier.rb
62
+ - lib/super_exception_notifier/notifiable_helper.rb
63
+ - rails/app/views/exception_notifiable/400.html
64
+ - rails/app/views/exception_notifiable/403.html
65
+ - rails/app/views/exception_notifiable/404.html
66
+ - rails/app/views/exception_notifiable/405.html
67
+ - rails/app/views/exception_notifiable/410.html
68
+ - rails/app/views/exception_notifiable/418.html
69
+ - rails/app/views/exception_notifiable/422.html
70
+ - rails/app/views/exception_notifiable/423.html
71
+ - rails/app/views/exception_notifiable/501.html
72
+ - rails/app/views/exception_notifiable/503.html
73
+ - rails/app/views/exception_notifiable/method_disabled.html.erb
74
+ - rails/init.rb
75
+ - tasks/notified_task.rake
76
+ - views/exception_notifier/_backtrace.html.erb
77
+ - views/exception_notifier/_environment.html.erb
78
+ - views/exception_notifier/_inspect_model.html.erb
79
+ - views/exception_notifier/_request.html.erb
80
+ - views/exception_notifier/_session.html.erb
81
+ - views/exception_notifier/_title.html.erb
82
+ - views/exception_notifier/background_exception_notification.text.plain.erb
83
+ - views/exception_notifier/exception_notification.text.plain.erb
84
+ has_rdoc: true
85
+ homepage: http://github.com/pboling/exception_notification
86
+ licenses: []
87
+
88
+ post_install_message:
89
+ rdoc_options:
90
+ - --charset=UTF-8
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: "0"
98
+ version:
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: "0"
104
+ version:
105
+ requirements: []
106
+
107
+ rubyforge_project:
108
+ rubygems_version: 1.3.5
109
+ signing_key:
110
+ specification_version: 3
111
+ summary: Allows unhandled (and handled!) exceptions to be captured and sent via email
112
+ test_files:
113
+ - test/exception_notifiable_test.rb
114
+ - test/exception_notifier_helper_test.rb
115
+ - test/exception_notifier_test.rb
116
+ - test/exception_notify_functional_test.rb
117
+ - test/mocks/controllers.rb
118
+ - test/notifiable_test.rb
119
+ - test/test_helper.rb