errational 0.7.1

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 (70) hide show
  1. data/Gemfile +9 -0
  2. data/Gemfile.lock +80 -0
  3. data/README +0 -0
  4. data/Rakefile +12 -0
  5. data/errational.gemspec +20 -0
  6. data/lib/errational.rb +34 -0
  7. data/lib/errational/errationalify.rb +86 -0
  8. data/lib/errational/errationality.rb +37 -0
  9. data/lib/errational/test_helpers.rb +11 -0
  10. data/lib/errational/version.rb +3 -0
  11. data/lib/generators/errational/install_generator.rb +34 -0
  12. data/lib/generators/templates/_error_dialog.js.erb +20 -0
  13. data/lib/generators/templates/errational_configuration.rb +18 -0
  14. data/lib/generators/templates/error_module.rb +53 -0
  15. data/lib/generators/templates/exception_module.rb +25 -0
  16. data/test/errational_test.rb +51 -0
  17. data/test/errationalify_test.rb +23 -0
  18. data/test/errationality_test.rb +69 -0
  19. data/test/generators/install_generator_test.rb +16 -0
  20. data/test/rails_app/.gitignore +4 -0
  21. data/test/rails_app/README +256 -0
  22. data/test/rails_app/Rakefile +7 -0
  23. data/test/rails_app/app/controllers/application_controller.rb +3 -0
  24. data/test/rails_app/app/helpers/application_helper.rb +2 -0
  25. data/test/rails_app/app/views/_error_dialog.js.erb +1 -0
  26. data/test/rails_app/app/views/layouts/application.html.erb +14 -0
  27. data/test/rails_app/config.ru +4 -0
  28. data/test/rails_app/config/application.rb +48 -0
  29. data/test/rails_app/config/boot.rb +9 -0
  30. data/test/rails_app/config/database.yml +22 -0
  31. data/test/rails_app/config/environment.rb +5 -0
  32. data/test/rails_app/config/environments/development.rb +26 -0
  33. data/test/rails_app/config/environments/production.rb +49 -0
  34. data/test/rails_app/config/environments/test.rb +35 -0
  35. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  36. data/test/rails_app/config/initializers/errational_configuration.rb +6 -0
  37. data/test/rails_app/config/initializers/inflections.rb +10 -0
  38. data/test/rails_app/config/initializers/mime_types.rb +5 -0
  39. data/test/rails_app/config/initializers/secret_token.rb +7 -0
  40. data/test/rails_app/config/initializers/session_store.rb +8 -0
  41. data/test/rails_app/config/locales/en.yml +5 -0
  42. data/test/rails_app/config/routes.rb +59 -0
  43. data/test/rails_app/db/seeds.rb +7 -0
  44. data/test/rails_app/doc/README_FOR_APP +2 -0
  45. data/test/rails_app/lib/rails_app_error.rb +54 -0
  46. data/test/rails_app/lib/rails_app_exception.rb +25 -0
  47. data/test/rails_app/lib/tasks/.gitkeep +0 -0
  48. data/test/rails_app/public/404.html +26 -0
  49. data/test/rails_app/public/422.html +26 -0
  50. data/test/rails_app/public/500.html +26 -0
  51. data/test/rails_app/public/favicon.ico +0 -0
  52. data/test/rails_app/public/images/rails.png +0 -0
  53. data/test/rails_app/public/index.html +239 -0
  54. data/test/rails_app/public/javascripts/application.js +2 -0
  55. data/test/rails_app/public/javascripts/controls.js +965 -0
  56. data/test/rails_app/public/javascripts/dragdrop.js +974 -0
  57. data/test/rails_app/public/javascripts/effects.js +1123 -0
  58. data/test/rails_app/public/javascripts/prototype.js +6001 -0
  59. data/test/rails_app/public/javascripts/rails.js +191 -0
  60. data/test/rails_app/public/robots.txt +5 -0
  61. data/test/rails_app/public/stylesheets/.gitkeep +0 -0
  62. data/test/rails_app/script/rails +6 -0
  63. data/test/rails_app/test/test_helper.rb +13 -0
  64. data/test/rails_app/vendor/plugins/.gitkeep +0 -0
  65. data/test/test_helper.rb +10 -0
  66. data/test/tmp/app/views/errational/_error_dialog.js.erb +20 -0
  67. data/test/tmp/config/initializers/errational_configuration.rb +18 -0
  68. data/test/tmp/lib/errational/rails_app_error.rb +53 -0
  69. data/test/tmp/lib/errational/rails_app_exception.rb +25 -0
  70. metadata +171 -0
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
File without changes
@@ -0,0 +1,10 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ $:.unshift File.dirname(__FILE__)
3
+ require "rails_app/config/environment"
4
+ require "rails/test_help"
5
+
6
+ # For generators
7
+ require "rails/generators/test_case"
8
+ require File.dirname(__FILE__) + '/../lib/errational'
9
+ require File.dirname(__FILE__) + '/../lib/generators/errational/install_generator'
10
+
@@ -0,0 +1,20 @@
1
+ /*
2
+ * This is the partial to be used for exceptions handled as the result of xhr actions
3
+ *
4
+ * where 'message' is the text from rails_app_error.rb
5
+ *
6
+ */
7
+ jQuery('body').append('<div id="errational_error_dialog"></div>');
8
+ jQuery('#errational_error_dialog')
9
+ .html('<%= message %>')
10
+ .dialog(
11
+ {
12
+ minHeight: 'auto',
13
+ height: 'auto',
14
+ modal: true,
15
+ dialogClass: 'errational_class',
16
+ title: 'Error!',
17
+ resizable: false,
18
+ width: 450
19
+ }
20
+ );
@@ -0,0 +1,18 @@
1
+ #TODO is this the best place for this line?
2
+ ActiveSupport::Dependencies.autoload_paths << "#{Rails.root}/lib/errational"
3
+
4
+ Errational.setup do |config|
5
+ # Namespace for name of exception and error modules, based on the name given at install time.
6
+ # Note, if changing, change the module names in lib/namespace_error.rb and lib/namespace_exception.rb,
7
+ # , as well as the filenames
8
+ config.namespace = "RailsApp"
9
+
10
+ # The response code given for exceptions that are handled.
11
+ config.error_response_code = 203
12
+
13
+ # The partial to be used for exceptions handled as the result of xhr actions
14
+ config.error_partial = '/errational/error_dialog'
15
+
16
+ # The logger to be used for NamespaceException::Loggable exceptions and unexpected exceptions
17
+ config.logger = Rails.logger
18
+ end
@@ -0,0 +1,53 @@
1
+ # This module contains modules of error constants, from each constant an exception class will be generated.
2
+ # Each submodule will be created as a class; it will be used as an intermediate ancestor between the exception class
3
+ # and the application exception class.
4
+ # For example, where Application is the name of the application:
5
+ # module ApplicationError
6
+ # module General
7
+ # UNEXPECTED = "An error has occurred in the application. Please try again."
8
+ # end
9
+ # module Loggable
10
+ # SERVICE_FAULT = "The response from the service cannot be processed. Please try again"
11
+ # end
12
+ # module Serious
13
+ # BAD_PROBLEM = "The server is on fire, please call the fire department"
14
+ # end
15
+ # end
16
+ #
17
+ # class FirstController < ApplicationController
18
+ # def index
19
+ # raise ApplicationException::ServiceFault # Will automatically be handled by the error handling gem with corresponding message.
20
+ # end
21
+ #
22
+ # def create
23
+ # raise RuntimeError # Will automatically be handled by error handling gem with UNEXPECTED message.
24
+ # end
25
+ #
26
+ # def update
27
+ # raise ApplicationException::BadProblem
28
+ # rescue ApplicationException::Parent => e # Will rescue any of the exceptions generated by the plugin.
29
+ # if(e.is_a? ApplicationException::Serious) # Sub modules are created as ancestor classes of exceptions, useful for special casing.
30
+ # call_lead_developer
31
+ # end
32
+ # end
33
+ # end
34
+ #
35
+ module RailsAppError
36
+
37
+ module General
38
+ # Default message for all general exceptions.
39
+ # Unexpected exceptions (ones without specific exception classes) will be logged.
40
+ UNEXPECTED = "An error has occurred with your last request. Please try again."
41
+ end
42
+
43
+ #Errors in this special module will be logged
44
+ module Loggable
45
+ end
46
+
47
+
48
+ def self.include_all_of_own_modules
49
+ constants.map { |c| const_get(c) }.select { |c| Module === c }.each { |c| include c }
50
+ end
51
+
52
+ include_all_of_own_modules
53
+ end
@@ -0,0 +1,25 @@
1
+ # This module is where you can override the default behavior of exception classes or add other exception classes.
2
+ # The default behavior of the exception classes is to create an exception with the message of the constant.
3
+ # Exception classes that override generated exception classes must be defined as children of their parent module's generated class.
4
+ # Example:
5
+ # module ApplicationException
6
+ # include ErrorHandlingClass
7
+ #
8
+ # class ServiceFault < Loggable
9
+ # def initialize(service_name)
10
+ # message = sprintf(ApplicationError::SERVICE_FAULT, service_name)
11
+ # end
12
+ # end
13
+ # end
14
+ # module ApplicationError
15
+ # module General
16
+ # UNEXPECTED = "An error has occurred in the application. Please try again."
17
+ # end
18
+ # module Loggable
19
+ # SERVICE_FAULT = "The response from %s cannot be processed. Please try again"
20
+ # end
21
+ # end
22
+
23
+ module RailsAppException
24
+ include Errationalify
25
+ end
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: errational
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kate Gengler
9
+ - Brian Olore
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-07-26 00:00:00.000000000 -07:00
14
+ default_executable:
15
+ dependencies: []
16
+ description: Nice error handling
17
+ email:
18
+ - errational@surrationale.net
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - Gemfile
24
+ - Gemfile.lock
25
+ - README
26
+ - Rakefile
27
+ - errational.gemspec
28
+ - lib/errational.rb
29
+ - lib/errational/errationalify.rb
30
+ - lib/errational/errationality.rb
31
+ - lib/errational/test_helpers.rb
32
+ - lib/errational/version.rb
33
+ - lib/generators/errational/install_generator.rb
34
+ - lib/generators/templates/_error_dialog.js.erb
35
+ - lib/generators/templates/errational_configuration.rb
36
+ - lib/generators/templates/error_module.rb
37
+ - lib/generators/templates/exception_module.rb
38
+ - test/errational_test.rb
39
+ - test/errationalify_test.rb
40
+ - test/errationality_test.rb
41
+ - test/generators/install_generator_test.rb
42
+ - test/rails_app/.gitignore
43
+ - test/rails_app/README
44
+ - test/rails_app/Rakefile
45
+ - test/rails_app/app/controllers/application_controller.rb
46
+ - test/rails_app/app/helpers/application_helper.rb
47
+ - test/rails_app/app/views/_error_dialog.js.erb
48
+ - test/rails_app/app/views/layouts/application.html.erb
49
+ - test/rails_app/config.ru
50
+ - test/rails_app/config/application.rb
51
+ - test/rails_app/config/boot.rb
52
+ - test/rails_app/config/database.yml
53
+ - test/rails_app/config/environment.rb
54
+ - test/rails_app/config/environments/development.rb
55
+ - test/rails_app/config/environments/production.rb
56
+ - test/rails_app/config/environments/test.rb
57
+ - test/rails_app/config/initializers/backtrace_silencers.rb
58
+ - test/rails_app/config/initializers/errational_configuration.rb
59
+ - test/rails_app/config/initializers/inflections.rb
60
+ - test/rails_app/config/initializers/mime_types.rb
61
+ - test/rails_app/config/initializers/secret_token.rb
62
+ - test/rails_app/config/initializers/session_store.rb
63
+ - test/rails_app/config/locales/en.yml
64
+ - test/rails_app/config/routes.rb
65
+ - test/rails_app/db/seeds.rb
66
+ - test/rails_app/doc/README_FOR_APP
67
+ - test/rails_app/lib/rails_app_error.rb
68
+ - test/rails_app/lib/rails_app_exception.rb
69
+ - test/rails_app/lib/tasks/.gitkeep
70
+ - test/rails_app/public/404.html
71
+ - test/rails_app/public/422.html
72
+ - test/rails_app/public/500.html
73
+ - test/rails_app/public/favicon.ico
74
+ - test/rails_app/public/images/rails.png
75
+ - test/rails_app/public/index.html
76
+ - test/rails_app/public/javascripts/application.js
77
+ - test/rails_app/public/javascripts/controls.js
78
+ - test/rails_app/public/javascripts/dragdrop.js
79
+ - test/rails_app/public/javascripts/effects.js
80
+ - test/rails_app/public/javascripts/prototype.js
81
+ - test/rails_app/public/javascripts/rails.js
82
+ - test/rails_app/public/robots.txt
83
+ - test/rails_app/public/stylesheets/.gitkeep
84
+ - test/rails_app/script/rails
85
+ - test/rails_app/test/test_helper.rb
86
+ - test/rails_app/vendor/plugins/.gitkeep
87
+ - test/test_helper.rb
88
+ - test/tmp/app/views/errational/_error_dialog.js.erb
89
+ - test/tmp/config/initializers/errational_configuration.rb
90
+ - test/tmp/lib/errational/rails_app_error.rb
91
+ - test/tmp/lib/errational/rails_app_exception.rb
92
+ has_rdoc: true
93
+ homepage:
94
+ licenses: []
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubyforge_project: errational
113
+ rubygems_version: 1.6.2
114
+ signing_key:
115
+ specification_version: 3
116
+ summary: A gem for nice exception handling.
117
+ test_files:
118
+ - test/errational_test.rb
119
+ - test/errationalify_test.rb
120
+ - test/errationality_test.rb
121
+ - test/generators/install_generator_test.rb
122
+ - test/rails_app/.gitignore
123
+ - test/rails_app/README
124
+ - test/rails_app/Rakefile
125
+ - test/rails_app/app/controllers/application_controller.rb
126
+ - test/rails_app/app/helpers/application_helper.rb
127
+ - test/rails_app/app/views/_error_dialog.js.erb
128
+ - test/rails_app/app/views/layouts/application.html.erb
129
+ - test/rails_app/config.ru
130
+ - test/rails_app/config/application.rb
131
+ - test/rails_app/config/boot.rb
132
+ - test/rails_app/config/database.yml
133
+ - test/rails_app/config/environment.rb
134
+ - test/rails_app/config/environments/development.rb
135
+ - test/rails_app/config/environments/production.rb
136
+ - test/rails_app/config/environments/test.rb
137
+ - test/rails_app/config/initializers/backtrace_silencers.rb
138
+ - test/rails_app/config/initializers/errational_configuration.rb
139
+ - test/rails_app/config/initializers/inflections.rb
140
+ - test/rails_app/config/initializers/mime_types.rb
141
+ - test/rails_app/config/initializers/secret_token.rb
142
+ - test/rails_app/config/initializers/session_store.rb
143
+ - test/rails_app/config/locales/en.yml
144
+ - test/rails_app/config/routes.rb
145
+ - test/rails_app/db/seeds.rb
146
+ - test/rails_app/doc/README_FOR_APP
147
+ - test/rails_app/lib/rails_app_error.rb
148
+ - test/rails_app/lib/rails_app_exception.rb
149
+ - test/rails_app/lib/tasks/.gitkeep
150
+ - test/rails_app/public/404.html
151
+ - test/rails_app/public/422.html
152
+ - test/rails_app/public/500.html
153
+ - test/rails_app/public/favicon.ico
154
+ - test/rails_app/public/images/rails.png
155
+ - test/rails_app/public/index.html
156
+ - test/rails_app/public/javascripts/application.js
157
+ - test/rails_app/public/javascripts/controls.js
158
+ - test/rails_app/public/javascripts/dragdrop.js
159
+ - test/rails_app/public/javascripts/effects.js
160
+ - test/rails_app/public/javascripts/prototype.js
161
+ - test/rails_app/public/javascripts/rails.js
162
+ - test/rails_app/public/robots.txt
163
+ - test/rails_app/public/stylesheets/.gitkeep
164
+ - test/rails_app/script/rails
165
+ - test/rails_app/test/test_helper.rb
166
+ - test/rails_app/vendor/plugins/.gitkeep
167
+ - test/test_helper.rb
168
+ - test/tmp/app/views/errational/_error_dialog.js.erb
169
+ - test/tmp/config/initializers/errational_configuration.rb
170
+ - test/tmp/lib/errational/rails_app_error.rb
171
+ - test/tmp/lib/errational/rails_app_exception.rb