super_exception_notifier 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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