exceptionally 1.0.1 → 1.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/README.md +10 -2
- data/lib/exceptionally/handler.rb +5 -3
- data/lib/exceptionally/version.rb +1 -1
- data/lib/exceptionally.rb +9 -0
- data/{test → spec}/dummy/app/assets/javascripts/application.js +1 -1
- data/{test → spec}/dummy/app/assets/stylesheets/application.css +5 -3
- data/{test → spec}/dummy/app/controllers/application_controller.rb +0 -0
- data/{test → spec}/dummy/app/helpers/application_helper.rb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +13 -0
- data/{test → spec}/dummy/bin/bundle +0 -0
- data/{test → spec}/dummy/bin/rails +0 -0
- data/{test → spec}/dummy/bin/rake +0 -0
- data/spec/dummy/config/application.rb +12 -0
- data/{test → spec}/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/database.yml +20 -0
- data/{test → spec}/dummy/config/environment.rb +1 -1
- data/{test → spec}/dummy/config/environments/development.rb +10 -5
- data/{test → spec}/dummy/config/environments/production.rb +8 -10
- data/{test → spec}/dummy/config/environments/test.rb +6 -8
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/{test → spec}/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/{test → spec}/dummy/config/initializers/filter_parameter_logging.rb +0 -0
- data/{test → spec}/dummy/config/initializers/inflections.rb +0 -0
- data/{test → spec}/dummy/config/initializers/mime_types.rb +0 -1
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/{test → spec}/dummy/config/initializers/wrap_parameters.rb +0 -0
- data/{test → spec}/dummy/config/locales/en.yml +0 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/{test → spec}/dummy/config.ru +0 -0
- data/spec/dummy/log/test.log +13013 -0
- data/{test → spec}/dummy/public/404.html +20 -11
- data/{test → spec}/dummy/public/422.html +20 -11
- data/{test → spec}/dummy/public/500.html +19 -10
- data/{test → spec}/dummy/public/favicon.ico +0 -0
- data/spec/dummy/version.rb +3 -0
- data/spec/exceptionally/config_spec.rb +11 -0
- data/spec/exceptionally/controller_spec.rb +45 -0
- data/spec/exceptionally/handler_spec.rb +89 -0
- data/spec/spec_helper.rb +26 -0
- metadata +132 -70
- data/Rakefile +0 -32
- data/lib/tasks/exceptionally_tasks.rake +0 -4
- data/test/dummy/README.rdoc +0 -28
- data/test/dummy/Rakefile +0 -6
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/config/application.rb +0 -23
- data/test/dummy/config/database.yml +0 -25
- data/test/dummy/config/initializers/secret_token.rb +0 -12
- data/test/dummy/config/initializers/session_store.rb +0 -3
- data/test/dummy/config/routes.rb +0 -56
- data/test/exceptionally_test.rb +0 -7
- data/test/test_helper.rb +0 -15
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>The page you were looking for doesn't exist (404)</title>
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
5
6
|
<style>
|
|
6
7
|
body {
|
|
7
8
|
background-color: #EFEFEF;
|
|
8
9
|
color: #2E2F30;
|
|
9
10
|
text-align: center;
|
|
10
11
|
font-family: arial, sans-serif;
|
|
12
|
+
margin: 0;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
div.dialog {
|
|
14
|
-
width:
|
|
15
|
-
|
|
16
|
+
width: 95%;
|
|
17
|
+
max-width: 33em;
|
|
18
|
+
margin: 4em auto 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
div.dialog > div {
|
|
16
22
|
border: 1px solid #CCC;
|
|
17
23
|
border-right-color: #999;
|
|
18
24
|
border-left-color: #999;
|
|
@@ -21,7 +27,8 @@
|
|
|
21
27
|
border-top-left-radius: 9px;
|
|
22
28
|
border-top-right-radius: 9px;
|
|
23
29
|
background-color: white;
|
|
24
|
-
padding: 7px
|
|
30
|
+
padding: 7px 12% 0;
|
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
h1 {
|
|
@@ -30,19 +37,19 @@
|
|
|
30
37
|
line-height: 1.5em;
|
|
31
38
|
}
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
padding: 1em 0;
|
|
40
|
+
div.dialog > p {
|
|
41
|
+
margin: 0 0 1em;
|
|
42
|
+
padding: 1em;
|
|
37
43
|
background-color: #F7F7F7;
|
|
38
44
|
border: 1px solid #CCC;
|
|
39
45
|
border-right-color: #999;
|
|
46
|
+
border-left-color: #999;
|
|
40
47
|
border-bottom-color: #999;
|
|
41
48
|
border-bottom-left-radius: 4px;
|
|
42
49
|
border-bottom-right-radius: 4px;
|
|
43
50
|
border-top-color: #DADADA;
|
|
44
51
|
color: #666;
|
|
45
|
-
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
46
53
|
}
|
|
47
54
|
</style>
|
|
48
55
|
</head>
|
|
@@ -50,9 +57,11 @@
|
|
|
50
57
|
<body>
|
|
51
58
|
<!-- This file lives in public/404.html -->
|
|
52
59
|
<div class="dialog">
|
|
53
|
-
<
|
|
54
|
-
|
|
60
|
+
<div>
|
|
61
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
|
62
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
|
63
|
+
</div>
|
|
64
|
+
<p>If you are the application owner check the logs for more information.</p>
|
|
55
65
|
</div>
|
|
56
|
-
<p>If you are the application owner check the logs for more information.</p>
|
|
57
66
|
</body>
|
|
58
67
|
</html>
|
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>The change you wanted was rejected (422)</title>
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
5
6
|
<style>
|
|
6
7
|
body {
|
|
7
8
|
background-color: #EFEFEF;
|
|
8
9
|
color: #2E2F30;
|
|
9
10
|
text-align: center;
|
|
10
11
|
font-family: arial, sans-serif;
|
|
12
|
+
margin: 0;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
div.dialog {
|
|
14
|
-
width:
|
|
15
|
-
|
|
16
|
+
width: 95%;
|
|
17
|
+
max-width: 33em;
|
|
18
|
+
margin: 4em auto 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
div.dialog > div {
|
|
16
22
|
border: 1px solid #CCC;
|
|
17
23
|
border-right-color: #999;
|
|
18
24
|
border-left-color: #999;
|
|
@@ -21,7 +27,8 @@
|
|
|
21
27
|
border-top-left-radius: 9px;
|
|
22
28
|
border-top-right-radius: 9px;
|
|
23
29
|
background-color: white;
|
|
24
|
-
padding: 7px
|
|
30
|
+
padding: 7px 12% 0;
|
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
h1 {
|
|
@@ -30,19 +37,19 @@
|
|
|
30
37
|
line-height: 1.5em;
|
|
31
38
|
}
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
padding: 1em 0;
|
|
40
|
+
div.dialog > p {
|
|
41
|
+
margin: 0 0 1em;
|
|
42
|
+
padding: 1em;
|
|
37
43
|
background-color: #F7F7F7;
|
|
38
44
|
border: 1px solid #CCC;
|
|
39
45
|
border-right-color: #999;
|
|
46
|
+
border-left-color: #999;
|
|
40
47
|
border-bottom-color: #999;
|
|
41
48
|
border-bottom-left-radius: 4px;
|
|
42
49
|
border-bottom-right-radius: 4px;
|
|
43
50
|
border-top-color: #DADADA;
|
|
44
51
|
color: #666;
|
|
45
|
-
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
46
53
|
}
|
|
47
54
|
</style>
|
|
48
55
|
</head>
|
|
@@ -50,9 +57,11 @@
|
|
|
50
57
|
<body>
|
|
51
58
|
<!-- This file lives in public/422.html -->
|
|
52
59
|
<div class="dialog">
|
|
53
|
-
<
|
|
54
|
-
|
|
60
|
+
<div>
|
|
61
|
+
<h1>The change you wanted was rejected.</h1>
|
|
62
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
|
63
|
+
</div>
|
|
64
|
+
<p>If you are the application owner check the logs for more information.</p>
|
|
55
65
|
</div>
|
|
56
|
-
<p>If you are the application owner check the logs for more information.</p>
|
|
57
66
|
</body>
|
|
58
67
|
</html>
|
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>We're sorry, but something went wrong (500)</title>
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
5
6
|
<style>
|
|
6
7
|
body {
|
|
7
8
|
background-color: #EFEFEF;
|
|
8
9
|
color: #2E2F30;
|
|
9
10
|
text-align: center;
|
|
10
11
|
font-family: arial, sans-serif;
|
|
12
|
+
margin: 0;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
div.dialog {
|
|
14
|
-
width:
|
|
15
|
-
|
|
16
|
+
width: 95%;
|
|
17
|
+
max-width: 33em;
|
|
18
|
+
margin: 4em auto 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
div.dialog > div {
|
|
16
22
|
border: 1px solid #CCC;
|
|
17
23
|
border-right-color: #999;
|
|
18
24
|
border-left-color: #999;
|
|
@@ -21,7 +27,8 @@
|
|
|
21
27
|
border-top-left-radius: 9px;
|
|
22
28
|
border-top-right-radius: 9px;
|
|
23
29
|
background-color: white;
|
|
24
|
-
padding: 7px
|
|
30
|
+
padding: 7px 12% 0;
|
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
h1 {
|
|
@@ -30,19 +37,19 @@
|
|
|
30
37
|
line-height: 1.5em;
|
|
31
38
|
}
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
padding: 1em 0;
|
|
40
|
+
div.dialog > p {
|
|
41
|
+
margin: 0 0 1em;
|
|
42
|
+
padding: 1em;
|
|
37
43
|
background-color: #F7F7F7;
|
|
38
44
|
border: 1px solid #CCC;
|
|
39
45
|
border-right-color: #999;
|
|
46
|
+
border-left-color: #999;
|
|
40
47
|
border-bottom-color: #999;
|
|
41
48
|
border-bottom-left-radius: 4px;
|
|
42
49
|
border-bottom-right-radius: 4px;
|
|
43
50
|
border-top-color: #DADADA;
|
|
44
51
|
color: #666;
|
|
45
|
-
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
|
46
53
|
}
|
|
47
54
|
</style>
|
|
48
55
|
</head>
|
|
@@ -50,8 +57,10 @@
|
|
|
50
57
|
<body>
|
|
51
58
|
<!-- This file lives in public/500.html -->
|
|
52
59
|
<div class="dialog">
|
|
53
|
-
<
|
|
60
|
+
<div>
|
|
61
|
+
<h1>We're sorry, but something went wrong.</h1>
|
|
62
|
+
</div>
|
|
63
|
+
<p>If you are the application owner check the logs for more information.</p>
|
|
54
64
|
</div>
|
|
55
|
-
<p>If you are the application owner check the logs for more information.</p>
|
|
56
65
|
</body>
|
|
57
66
|
</html>
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Exceptionally do
|
|
4
|
+
it 'saves report_errors' do
|
|
5
|
+
Exceptionally.report_errors = true
|
|
6
|
+
expect(Exceptionally.report_errors).to eq(true)
|
|
7
|
+
|
|
8
|
+
Exceptionally.report_errors = false
|
|
9
|
+
expect(Exceptionally.report_errors).to eq(false)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActionController, :type => :controller do
|
|
4
|
+
controller do
|
|
5
|
+
def index
|
|
6
|
+
raise ArgumentError.new
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before do
|
|
11
|
+
routes.draw { get 'index' => "anonymous#index" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "when a controller raises an error" do
|
|
15
|
+
it 'returns a 500 response when a general error is raised' do
|
|
16
|
+
get :index
|
|
17
|
+
expect(response.status).to eq(500)
|
|
18
|
+
expect(JSON.parse(response.body)['error']).to eq('ArgumentError')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'returns a custom error message when available' do
|
|
22
|
+
allow(controller).to receive(:index).and_raise(ArgumentError.new('some error'))
|
|
23
|
+
|
|
24
|
+
get :index
|
|
25
|
+
expect(response.status).to eq(500)
|
|
26
|
+
expect(JSON.parse(response.body)['error']).to eq('some error')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'returns a 404 response when a record is not found' do
|
|
30
|
+
allow(controller).to receive(:index).and_raise(ActiveRecord::RecordNotFound.new)
|
|
31
|
+
|
|
32
|
+
get :index
|
|
33
|
+
expect(response.status).to eq(404)
|
|
34
|
+
expect(JSON.parse(response.body)['error']).to eq('ActiveRecord::RecordNotFound')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'returns a 403 response when Forbidden' do
|
|
38
|
+
allow(controller).to receive(:index).and_raise(Exceptionally::Forbidden.new)
|
|
39
|
+
|
|
40
|
+
get :index
|
|
41
|
+
expect(response.status).to eq(403)
|
|
42
|
+
expect(JSON.parse(response.body)['error']).to eq('Forbidden')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActionController, :type => :controller do
|
|
4
|
+
controller do
|
|
5
|
+
def index
|
|
6
|
+
raise Exceptionally::Error.new
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before do
|
|
11
|
+
routes.draw { get 'index' => "anonymous#index" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'logs 5xx errors' do
|
|
15
|
+
expect(Rails.logger).to receive(:error).with('500 Internal Server Error').once
|
|
16
|
+
expect(Rails.logger).to receive(:error).exactly(2).times
|
|
17
|
+
get :index
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'logs 5xx errors with a custom error message' do
|
|
21
|
+
allow(controller).to receive(:index).and_raise(Exceptionally::BadGateway.new('some custom error'))
|
|
22
|
+
|
|
23
|
+
expect(Rails.logger).to receive(:error).with('502 Bad Gateway: some custom error').once
|
|
24
|
+
expect(Rails.logger).to receive(:error).exactly(2).times
|
|
25
|
+
get :index
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'does not log 4xx errors' do
|
|
29
|
+
allow(controller).to receive(:index).and_raise(Exceptionally::BadRequest.new)
|
|
30
|
+
|
|
31
|
+
expect(Rails.logger).to_not receive(:error)
|
|
32
|
+
get :index
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'calls handler before logging an error when set' do
|
|
36
|
+
temp_var = nil
|
|
37
|
+
Exceptionally::Handler.before_render do |message, status, error, params|
|
|
38
|
+
temp_var = message
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
get :index
|
|
42
|
+
expect(temp_var).to eq('Internal Server Error')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'does not call handler before logging an error when none is proved' do
|
|
46
|
+
temp_var = nil
|
|
47
|
+
|
|
48
|
+
get :index
|
|
49
|
+
expect(temp_var).to eq(nil)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe 'when only Raven is defined' do
|
|
53
|
+
describe 'and report_errors is true' do
|
|
54
|
+
before do
|
|
55
|
+
Exceptionally.report_errors = true
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'reports errors for a 500 error' do
|
|
59
|
+
expect(Raven).to receive(:capture_exception)
|
|
60
|
+
get :index
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'does not report errors for a 400 error' do
|
|
64
|
+
allow(controller).to receive(:index).and_raise(Exceptionally::BadRequest.new)
|
|
65
|
+
|
|
66
|
+
expect(Raven).to_not receive(:capture_exception)
|
|
67
|
+
get :index
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'does not report errors to Airbrake' do
|
|
71
|
+
expect(Airbrake).to receive(:respond_to?).at_least(:once)
|
|
72
|
+
expect(Airbrake).to_not receive(:notify)
|
|
73
|
+
|
|
74
|
+
get :index
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe 'and report_errors is false' do
|
|
79
|
+
before do
|
|
80
|
+
Exceptionally.report_errors = false
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'does not report errors for a 500 error' do
|
|
84
|
+
expect(Raven).to_not receive(:capture_exception)
|
|
85
|
+
get :index
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
2
|
+
|
|
3
|
+
ENV['RAILS_ENV'] ||= 'test'
|
|
4
|
+
|
|
5
|
+
require 'rails'
|
|
6
|
+
require 'active_record'
|
|
7
|
+
require 'action_view'
|
|
8
|
+
require 'action_controller'
|
|
9
|
+
require 'nulldb_rspec'
|
|
10
|
+
require 'dummy/config/environment'
|
|
11
|
+
require 'rspec/rails'
|
|
12
|
+
|
|
13
|
+
require 'exceptionally'
|
|
14
|
+
|
|
15
|
+
RSpec.configure do |c|
|
|
16
|
+
c.infer_base_class_for_anonymous_controllers = false
|
|
17
|
+
c.order = 'random'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
ActiveRecord::Base.establish_connection :adapter => :nulldb
|
|
21
|
+
|
|
22
|
+
class Raven
|
|
23
|
+
def capture_exception(error); end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Airbrake; end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: exceptionally
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Neil Gupta
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-06-
|
|
11
|
+
date: 2015-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -30,6 +30,62 @@ dependencies:
|
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: '5.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: bundler
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '0'
|
|
40
|
+
type: :development
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: rake
|
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
- !ruby/object:Gem::Dependency
|
|
62
|
+
name: rspec-rails
|
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
type: :development
|
|
69
|
+
prerelease: false
|
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
- !ruby/object:Gem::Dependency
|
|
76
|
+
name: activerecord-nulldb-adapter
|
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
33
89
|
description: Exceptionally abstracts your exception logic to make raising and returning
|
|
34
90
|
meaningful errors in Ruby on Rails easier.
|
|
35
91
|
email: neil@metamorphium.com
|
|
@@ -39,47 +95,49 @@ extra_rdoc_files: []
|
|
|
39
95
|
files:
|
|
40
96
|
- MIT-LICENSE
|
|
41
97
|
- README.md
|
|
42
|
-
- Rakefile
|
|
43
98
|
- lib/exceptionally.rb
|
|
44
99
|
- lib/exceptionally/controller.rb
|
|
45
100
|
- lib/exceptionally/exceptions.rb
|
|
46
101
|
- lib/exceptionally/handler.rb
|
|
47
102
|
- lib/exceptionally/railtie.rb
|
|
48
103
|
- lib/exceptionally/version.rb
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
104
|
+
- spec/dummy/app/assets/javascripts/application.js
|
|
105
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
|
106
|
+
- spec/dummy/app/controllers/application_controller.rb
|
|
107
|
+
- spec/dummy/app/helpers/application_helper.rb
|
|
108
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
|
109
|
+
- spec/dummy/bin/bundle
|
|
110
|
+
- spec/dummy/bin/rails
|
|
111
|
+
- spec/dummy/bin/rake
|
|
112
|
+
- spec/dummy/config.ru
|
|
113
|
+
- spec/dummy/config/application.rb
|
|
114
|
+
- spec/dummy/config/boot.rb
|
|
115
|
+
- spec/dummy/config/database.yml
|
|
116
|
+
- spec/dummy/config/environment.rb
|
|
117
|
+
- spec/dummy/config/environments/development.rb
|
|
118
|
+
- spec/dummy/config/environments/production.rb
|
|
119
|
+
- spec/dummy/config/environments/test.rb
|
|
120
|
+
- spec/dummy/config/initializers/assets.rb
|
|
121
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
|
122
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
|
123
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
|
124
|
+
- spec/dummy/config/initializers/inflections.rb
|
|
125
|
+
- spec/dummy/config/initializers/mime_types.rb
|
|
126
|
+
- spec/dummy/config/initializers/session_store.rb
|
|
127
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
|
128
|
+
- spec/dummy/config/locales/en.yml
|
|
129
|
+
- spec/dummy/config/routes.rb
|
|
130
|
+
- spec/dummy/config/secrets.yml
|
|
131
|
+
- spec/dummy/log/test.log
|
|
132
|
+
- spec/dummy/public/404.html
|
|
133
|
+
- spec/dummy/public/422.html
|
|
134
|
+
- spec/dummy/public/500.html
|
|
135
|
+
- spec/dummy/public/favicon.ico
|
|
136
|
+
- spec/dummy/version.rb
|
|
137
|
+
- spec/exceptionally/config_spec.rb
|
|
138
|
+
- spec/exceptionally/controller_spec.rb
|
|
139
|
+
- spec/exceptionally/handler_spec.rb
|
|
140
|
+
- spec/spec_helper.rb
|
|
83
141
|
homepage: https://github.com/neilgupta/exceptionally
|
|
84
142
|
licenses:
|
|
85
143
|
- MIT
|
|
@@ -105,37 +163,41 @@ signing_key:
|
|
|
105
163
|
specification_version: 4
|
|
106
164
|
summary: Exceptionally simple Rails Exception library
|
|
107
165
|
test_files:
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
166
|
+
- spec/dummy/app/assets/javascripts/application.js
|
|
167
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
|
168
|
+
- spec/dummy/app/controllers/application_controller.rb
|
|
169
|
+
- spec/dummy/app/helpers/application_helper.rb
|
|
170
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
|
171
|
+
- spec/dummy/bin/bundle
|
|
172
|
+
- spec/dummy/bin/rails
|
|
173
|
+
- spec/dummy/bin/rake
|
|
174
|
+
- spec/dummy/config/application.rb
|
|
175
|
+
- spec/dummy/config/boot.rb
|
|
176
|
+
- spec/dummy/config/database.yml
|
|
177
|
+
- spec/dummy/config/environment.rb
|
|
178
|
+
- spec/dummy/config/environments/development.rb
|
|
179
|
+
- spec/dummy/config/environments/production.rb
|
|
180
|
+
- spec/dummy/config/environments/test.rb
|
|
181
|
+
- spec/dummy/config/initializers/assets.rb
|
|
182
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
|
183
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
|
184
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
|
185
|
+
- spec/dummy/config/initializers/inflections.rb
|
|
186
|
+
- spec/dummy/config/initializers/mime_types.rb
|
|
187
|
+
- spec/dummy/config/initializers/session_store.rb
|
|
188
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
|
189
|
+
- spec/dummy/config/locales/en.yml
|
|
190
|
+
- spec/dummy/config/routes.rb
|
|
191
|
+
- spec/dummy/config/secrets.yml
|
|
192
|
+
- spec/dummy/config.ru
|
|
193
|
+
- spec/dummy/log/test.log
|
|
194
|
+
- spec/dummy/public/404.html
|
|
195
|
+
- spec/dummy/public/422.html
|
|
196
|
+
- spec/dummy/public/500.html
|
|
197
|
+
- spec/dummy/public/favicon.ico
|
|
198
|
+
- spec/dummy/version.rb
|
|
199
|
+
- spec/exceptionally/config_spec.rb
|
|
200
|
+
- spec/exceptionally/controller_spec.rb
|
|
201
|
+
- spec/exceptionally/handler_spec.rb
|
|
202
|
+
- spec/spec_helper.rb
|
|
141
203
|
has_rdoc:
|