gaffe 0.2 → 0.2.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/README.md +1 -1
- data/app/assets/stylesheets/errors.css +2 -0
- data/app/views/errors/bad_request.html.erb +1 -0
- data/app/views/errors/method_not_allowed.html.erb +1 -0
- data/app/views/errors/not_acceptable.html.erb +1 -0
- data/app/views/errors/not_implemented.html.erb +1 -0
- data/app/views/errors/unprocessable_entity.html.erb +1 -0
- data/app/views/layouts/error.html.erb +4 -3
- data/lib/gaffe/errors.rb +6 -2
- data/lib/gaffe/version.rb +1 -1
- data/lib/gaffe.rb +6 -3
- data/spec/gaffe/errors_spec.rb +18 -3
- data/spec/gaffe/gaffe_spec.rb +0 -7
- data/spec/spec_helper.rb +6 -0
- metadata +9 -4
data/README.md
CHANGED
@@ -83,7 +83,7 @@ You can (and should!) also use your own views. You just have to create a layout:
|
|
83
83
|
<%= yield %>
|
84
84
|
```
|
85
85
|
|
86
|
-
And create a different view for [each possible error rescue response](https://github.com/rails/rails/blob/f9ceefd3b9c3cea2460a89799156f2c532c4491c/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb). For example, for `404` errors:
|
86
|
+
And create a different view for [each possible error rescue response](https://github.com/mirego/gaffe/tree/master/app/views/errors) ([rails reference](https://github.com/rails/rails/blob/f9ceefd3b9c3cea2460a89799156f2c532c4491c/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb)). For example, for `404` errors:
|
87
87
|
|
88
88
|
```erb
|
89
89
|
<!-- app/views/errors/not_found.html.erb -->
|
@@ -0,0 +1 @@
|
|
1
|
+
Bad Request
|
@@ -0,0 +1 @@
|
|
1
|
+
Method Not Allowed
|
@@ -0,0 +1 @@
|
|
1
|
+
Not Acceptable
|
@@ -0,0 +1 @@
|
|
1
|
+
Not Implemented
|
@@ -0,0 +1 @@
|
|
1
|
+
Unprocessable Entity
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta charset="UTF-8" />
|
5
5
|
<title>Error!</title>
|
6
6
|
<style type="text/css">
|
7
|
-
<%= File.read(
|
7
|
+
<%= File.read(Gaffe.root.join('app/assets/stylesheets/errors.css')).gsub("\n", ' ').gsub(' ', ' ') %>
|
8
8
|
</style>
|
9
9
|
</head>
|
10
10
|
<body>
|
@@ -20,9 +20,10 @@
|
|
20
20
|
|
21
21
|
<p>You can overwrite this page by creating these files:</p>
|
22
22
|
|
23
|
+
<% handlers = ActionView::Template::Handlers.extensions.map(&:to_s).join(', ') %>
|
23
24
|
<pre>
|
24
|
-
<code><%= Rails.root.join('app', 'views', 'layouts', "error.html.<em>
|
25
|
-
<code><%= Rails.root.join('app', 'views', 'errors', "#{@rescue_response.to_s}.html.<em>
|
25
|
+
<code><%= Rails.root.join('app', 'views', 'layouts', "error.html.<em title='#{handlers}'>handler</em>").to_s.html_safe %></code>
|
26
|
+
<code><%= Rails.root.join('app', 'views', 'errors', "#{@rescue_response.to_s}.html.<em title='#{handlers}'>handler</em>").to_s.html_safe %></code>
|
26
27
|
</pre>
|
27
28
|
</div>
|
28
29
|
</body>
|
data/lib/gaffe/errors.rb
CHANGED
@@ -9,7 +9,11 @@ module Gaffe
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def show
|
12
|
-
|
12
|
+
begin
|
13
|
+
render "errors/#{@rescue_response}", status: @status_code
|
14
|
+
rescue ActionView::MissingTemplate
|
15
|
+
render "errors/internal_server_error", status: 500
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
protected
|
@@ -23,7 +27,7 @@ module Gaffe
|
|
23
27
|
private
|
24
28
|
|
25
29
|
def append_view_paths
|
26
|
-
append_view_path
|
30
|
+
append_view_path Gaffe.root.join('app/views')
|
27
31
|
end
|
28
32
|
end
|
29
33
|
end
|
data/lib/gaffe/version.rb
CHANGED
data/lib/gaffe.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'gaffe/version'
|
2
2
|
|
3
3
|
require 'ostruct'
|
4
|
+
require 'pathname'
|
4
5
|
require 'gaffe/errors'
|
5
6
|
|
6
7
|
module Gaffe
|
@@ -16,8 +17,10 @@ module Gaffe
|
|
16
17
|
|
17
18
|
# Return our default controller
|
18
19
|
def self.builtin_errors_controller
|
19
|
-
|
20
|
-
|
20
|
+
@builtin_errors_controller ||= begin
|
21
|
+
require 'gaffe/errors_controller'
|
22
|
+
Gaffe::ErrorsController
|
23
|
+
end
|
21
24
|
end
|
22
25
|
|
23
26
|
# Configure Rails to use our code when encountering exceptions
|
@@ -41,6 +44,6 @@ module Gaffe
|
|
41
44
|
|
42
45
|
# Return the root path of the gem
|
43
46
|
def self.root
|
44
|
-
File.expand_path('../../', __FILE__)
|
47
|
+
Pathname.new(File.expand_path('../../', __FILE__))
|
45
48
|
end
|
46
49
|
end
|
data/spec/gaffe/errors_spec.rb
CHANGED
@@ -5,13 +5,28 @@ describe Gaffe::Errors do
|
|
5
5
|
describe :show do
|
6
6
|
let(:request) { ActionDispatch::TestRequest.new }
|
7
7
|
let(:env) { request.env.merge 'action_dispatch.exception' => exception }
|
8
|
-
let(:exception) { ActionController::RoutingError.new(:foo) }
|
9
8
|
|
10
9
|
let(:response) { Gaffe.errors_controller_for_request(env).action(:show).call(env) }
|
11
10
|
subject { response.last }
|
12
11
|
|
13
|
-
|
14
|
-
|
12
|
+
context 'with builtin exception' do
|
13
|
+
let(:exception) { ActionController::RoutingError.new(:foo) }
|
14
|
+
its(:status) { should eql 404 }
|
15
|
+
its(:body) { should match /Not Found/ }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with custom exception and missing view' do
|
19
|
+
before { ActionDispatch::ExceptionWrapper.rescue_responses.merge! exception_class.name => 'my_custom_error' }
|
20
|
+
|
21
|
+
let(:exception_class) do
|
22
|
+
Object.instance_eval { remove_const :MyCustomError } if Object.const_defined?(:MyCustomError)
|
23
|
+
MyCustomError = Class.new(StandardError)
|
24
|
+
end
|
25
|
+
|
26
|
+
let(:exception) { exception_class.new }
|
27
|
+
its(:status) { should eql 500 }
|
28
|
+
its(:body) { should match /Internal Server Error/ }
|
29
|
+
end
|
15
30
|
end
|
16
31
|
end
|
17
32
|
end
|
data/spec/gaffe/gaffe_spec.rb
CHANGED
@@ -2,13 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Gaffe do
|
4
4
|
describe :ClassMethods do
|
5
|
-
before do
|
6
|
-
# Make sure we clear memoized variables before each test
|
7
|
-
[:@configuration].each do |variable|
|
8
|
-
Gaffe.send :remove_instance_variable, variable if Gaffe.instance_variable_defined?(variable)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
5
|
describe :configure do
|
13
6
|
subject { Gaffe.configuration }
|
14
7
|
before do
|
data/spec/spec_helper.rb
CHANGED
@@ -6,7 +6,13 @@ require 'gaffe'
|
|
6
6
|
|
7
7
|
RSpec.configure do |config|
|
8
8
|
config.before(:each) do
|
9
|
+
# Fake Rails.root
|
9
10
|
Rails.stub(:root).and_return(RAILS_ROOT)
|
11
|
+
|
12
|
+
# Make sure we clear memoized variables before each test
|
13
|
+
[:@configuration].each do |variable|
|
14
|
+
Gaffe.send :remove_instance_variable, variable if Gaffe.instance_variable_defined?(variable)
|
15
|
+
end
|
10
16
|
end
|
11
17
|
end
|
12
18
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gaffe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-08-
|
13
|
+
date: 2013-08-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -92,10 +92,15 @@ files:
|
|
92
92
|
- README.md
|
93
93
|
- Rakefile
|
94
94
|
- app/assets/stylesheets/errors.css
|
95
|
+
- app/views/errors/bad_request.html.erb
|
95
96
|
- app/views/errors/forbidden.html.erb
|
96
97
|
- app/views/errors/internal_server_error.html.erb
|
98
|
+
- app/views/errors/method_not_allowed.html.erb
|
99
|
+
- app/views/errors/not_acceptable.html.erb
|
97
100
|
- app/views/errors/not_found.html.erb
|
101
|
+
- app/views/errors/not_implemented.html.erb
|
98
102
|
- app/views/errors/unauthorized.html.erb
|
103
|
+
- app/views/errors/unprocessable_entity.html.erb
|
99
104
|
- app/views/layouts/error.html.erb
|
100
105
|
- gaffe.gemspec
|
101
106
|
- gemfiles/Gemfile.rails-3.2.x
|
@@ -122,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
127
|
version: '0'
|
123
128
|
segments:
|
124
129
|
- 0
|
125
|
-
hash:
|
130
|
+
hash: 843740072442851156
|
126
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
132
|
none: false
|
128
133
|
requirements:
|
@@ -131,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
136
|
version: '0'
|
132
137
|
segments:
|
133
138
|
- 0
|
134
|
-
hash:
|
139
|
+
hash: 843740072442851156
|
135
140
|
requirements: []
|
136
141
|
rubyforge_project:
|
137
142
|
rubygems_version: 1.8.23
|