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.
- data/Gemfile +9 -0
- data/Gemfile.lock +80 -0
- data/README +0 -0
- data/Rakefile +12 -0
- data/errational.gemspec +20 -0
- data/lib/errational.rb +34 -0
- data/lib/errational/errationalify.rb +86 -0
- data/lib/errational/errationality.rb +37 -0
- data/lib/errational/test_helpers.rb +11 -0
- data/lib/errational/version.rb +3 -0
- data/lib/generators/errational/install_generator.rb +34 -0
- data/lib/generators/templates/_error_dialog.js.erb +20 -0
- data/lib/generators/templates/errational_configuration.rb +18 -0
- data/lib/generators/templates/error_module.rb +53 -0
- data/lib/generators/templates/exception_module.rb +25 -0
- data/test/errational_test.rb +51 -0
- data/test/errationalify_test.rb +23 -0
- data/test/errationality_test.rb +69 -0
- data/test/generators/install_generator_test.rb +16 -0
- data/test/rails_app/.gitignore +4 -0
- data/test/rails_app/README +256 -0
- data/test/rails_app/Rakefile +7 -0
- data/test/rails_app/app/controllers/application_controller.rb +3 -0
- data/test/rails_app/app/helpers/application_helper.rb +2 -0
- data/test/rails_app/app/views/_error_dialog.js.erb +1 -0
- data/test/rails_app/app/views/layouts/application.html.erb +14 -0
- data/test/rails_app/config.ru +4 -0
- data/test/rails_app/config/application.rb +48 -0
- data/test/rails_app/config/boot.rb +9 -0
- data/test/rails_app/config/database.yml +22 -0
- data/test/rails_app/config/environment.rb +5 -0
- data/test/rails_app/config/environments/development.rb +26 -0
- data/test/rails_app/config/environments/production.rb +49 -0
- data/test/rails_app/config/environments/test.rb +35 -0
- data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_app/config/initializers/errational_configuration.rb +6 -0
- data/test/rails_app/config/initializers/inflections.rb +10 -0
- data/test/rails_app/config/initializers/mime_types.rb +5 -0
- data/test/rails_app/config/initializers/secret_token.rb +7 -0
- data/test/rails_app/config/initializers/session_store.rb +8 -0
- data/test/rails_app/config/locales/en.yml +5 -0
- data/test/rails_app/config/routes.rb +59 -0
- data/test/rails_app/db/seeds.rb +7 -0
- data/test/rails_app/doc/README_FOR_APP +2 -0
- data/test/rails_app/lib/rails_app_error.rb +54 -0
- data/test/rails_app/lib/rails_app_exception.rb +25 -0
- data/test/rails_app/lib/tasks/.gitkeep +0 -0
- data/test/rails_app/public/404.html +26 -0
- data/test/rails_app/public/422.html +26 -0
- data/test/rails_app/public/500.html +26 -0
- data/test/rails_app/public/favicon.ico +0 -0
- data/test/rails_app/public/images/rails.png +0 -0
- data/test/rails_app/public/index.html +239 -0
- data/test/rails_app/public/javascripts/application.js +2 -0
- data/test/rails_app/public/javascripts/controls.js +965 -0
- data/test/rails_app/public/javascripts/dragdrop.js +974 -0
- data/test/rails_app/public/javascripts/effects.js +1123 -0
- data/test/rails_app/public/javascripts/prototype.js +6001 -0
- data/test/rails_app/public/javascripts/rails.js +191 -0
- data/test/rails_app/public/robots.txt +5 -0
- data/test/rails_app/public/stylesheets/.gitkeep +0 -0
- data/test/rails_app/script/rails +6 -0
- data/test/rails_app/test/test_helper.rb +13 -0
- data/test/rails_app/vendor/plugins/.gitkeep +0 -0
- data/test/test_helper.rb +10 -0
- data/test/tmp/app/views/errational/_error_dialog.js.erb +20 -0
- data/test/tmp/config/initializers/errational_configuration.rb +18 -0
- data/test/tmp/lib/errational/rails_app_error.rb +53 -0
- data/test/tmp/lib/errational/rails_app_exception.rb +25 -0
- 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
|
+
})();
|
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
|
data/test/test_helper.rb
ADDED
@@ -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
|