gaffe 0.2.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 +7 -0
- data/README.md +50 -11
- data/gaffe.gemspec +1 -0
- data/lib/gaffe/version.rb +1 -1
- data/spec/gaffe/gaffe_spec.rb +16 -0
- data/spec/spec_helper.rb +6 -0
- metadata +25 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8ce01c4c09894fecd78f12031f46135cbc4c8abf
|
4
|
+
data.tar.gz: 60960d0ee25ed32565227492b3014d491c45571a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: db16c3dc353687abeadccf095aa5b6000d94f9f68938e3106b19528a9f14a322f06f1d389fa5edef8c6cafd6a6f9f6f33e779eee8d0ef1f450bba99c4b147dd5
|
7
|
+
data.tar.gz: 7083bbd24ada18edd68684b8d544e9ee22446f9bd0161721990a4437f04d39773bcdac294efe07a50cff5b77511c5812470abac52672a9478e8f5719d2e6394f
|
data/README.md
CHANGED
@@ -1,14 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
Gaffe
|
1
|
+
<p align="center">
|
2
|
+
<a href="https://github.com/mirego/gaffe">
|
3
|
+
<img src="http://i.imgur.com/k9Vo08q.png" alt="gaffe" />
|
4
|
+
</a>
|
5
|
+
<br />
|
6
|
+
Gaffe makes having customized error pages in Rails applications an easy thing.<br /> It takes advantage of a feature present in Rails 3.2+ called <code>exceptions_app</code>.
|
7
|
+
<br /><br />
|
8
|
+
<a href="https://rubygems.org/gems/gaffe"><img src="https://badge.fury.io/rb/gaffe.png" /></a>
|
9
|
+
<a href="https://codeclimate.com/github/mirego/gaffe"><img src="https://codeclimate.com/github/mirego/gaffe.png" /></a>
|
10
|
+
<a href='https://coveralls.io/r/mirego/gaffe?branch=master'><img src='https://coveralls.io/repos/mirego/gaffe/badge.png?branch=master' /></a>
|
11
|
+
<a href='https://gemnasium.com/mirego/gaffe'><img src="https://gemnasium.com/mirego/gaffe.png" /></a>
|
12
|
+
<a href="https://travis-ci.org/mirego/gaffe"><img src="https://travis-ci.org/mirego/gaffe.png?branch=master" /></a>
|
13
|
+
</p>
|
14
|
+
|
15
|
+
---
|
16
|
+
|
17
|
+
It comes with default error pages but makes it very easy to override them (which you should do). The default error pages look like this:
|
7
18
|
|
8
19
|

|
9
20
|
|
10
|
-
You should overwrite it though, it’s very easy to do so.
|
11
|
-
|
12
21
|
## Installation
|
13
22
|
|
14
23
|
Add this line to your application’s Gemfile:
|
@@ -57,7 +66,11 @@ Gaffe.enable!
|
|
57
66
|
|
58
67
|
The only required thing to do in your custom controller is to include the `Gaffe::Errors` module.
|
59
68
|
|
60
|
-
Only `show` will be called so you might want to
|
69
|
+
Only `show` will be called so you might want to override it. If you don’t override it, Gaffe will
|
70
|
+
try to render the view `"errors/#{@rescue_response}"` within your application (or use its default
|
71
|
+
error page if the view doesn’t exist).
|
72
|
+
|
73
|
+
You might also want to get rid of filters and other stuff to make sure that error pages are always accessible.
|
61
74
|
|
62
75
|
```ruby
|
63
76
|
class ErrorsController < ApplicationController
|
@@ -73,6 +86,19 @@ class ErrorsController < ApplicationController
|
|
73
86
|
end
|
74
87
|
```
|
75
88
|
|
89
|
+
For example, you might want your `Api::ErrorsController` to return a standard JSON response:
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
class Api::ErrorsController < Api::ApplicationController
|
93
|
+
include Gaffe::Errors
|
94
|
+
skip_before_filter :ensure_current_user
|
95
|
+
|
96
|
+
def show
|
97
|
+
render json: { error: @rescue_response }, status: @status_code
|
98
|
+
end
|
99
|
+
end
|
100
|
+
```
|
101
|
+
|
76
102
|
### Custom views
|
77
103
|
|
78
104
|
You can (and should!) also use your own views. You just have to create a layout:
|
@@ -98,14 +124,27 @@ specific rescue responses.
|
|
98
124
|
|
99
125
|
```ruby
|
100
126
|
# config/application.rb
|
101
|
-
config.action_dispatch.rescue_responses.merge!
|
102
|
-
config.action_dispatch.rescue_responses.merge!
|
127
|
+
config.action_dispatch.rescue_responses.merge! 'CanCan::AccessDenied' => :forbidden
|
128
|
+
config.action_dispatch.rescue_responses.merge! 'MyCustomException' => :not_acceptable
|
129
|
+
```
|
130
|
+
|
131
|
+
### Rails development mode
|
132
|
+
|
133
|
+
Rails prefers to render its own debug-friendly errors in the `development` environment,
|
134
|
+
which is totally understandable. However, if you want to test Gaffe’s behavior in development
|
135
|
+
you’ll have to edit the `config/environments/development.rb` file.
|
136
|
+
|
137
|
+
```ruby
|
138
|
+
# Make Rails use `exceptions_app` in development
|
139
|
+
config.consider_all_requests_local = false
|
103
140
|
```
|
104
141
|
|
105
142
|
## License
|
106
143
|
|
107
144
|
`Gaffe` is © 2013 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/gaffe/blob/master/LICENSE.md) file.
|
108
145
|
|
146
|
+
The mushroom cloud logo is based on [this lovely icon](http://thenounproject.com/noun/mushroom-cloud/#icon-No18596) by [Gokce Ozan](http://thenounproject.com/occultsearcher), from The Noun Project. Used under a [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/) license.
|
147
|
+
|
109
148
|
## About Mirego
|
110
149
|
|
111
150
|
Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We proudly build mobile applications for [iPhone](http://mirego.com/en/iphone-app-development/ "iPhone application development"), [iPad](http://mirego.com/en/ipad-app-development/ "iPad application development"), [Android](http://mirego.com/en/android-app-development/ "Android application development"), [Blackberry](http://mirego.com/en/blackberry-app-development/ "Blackberry application development"), [Windows Phone](http://mirego.com/en/windows-phone-app-development/ "Windows Phone application development") and [Windows 8](http://mirego.com/en/windows-8-app-development/ "Windows 8 application development") in beautiful Quebec City.
|
data/gaffe.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
23
|
spec.add_development_dependency 'rspec', '~> 2.14'
|
24
|
+
spec.add_development_dependency 'coveralls'
|
24
25
|
|
25
26
|
spec.add_dependency 'rails', '>= 3.2.0'
|
26
27
|
end
|
data/lib/gaffe/version.rb
CHANGED
data/spec/gaffe/gaffe_spec.rb
CHANGED
@@ -55,5 +55,21 @@ describe Gaffe do
|
|
55
55
|
it { expect(controller).to eql Gaffe::ErrorsController }
|
56
56
|
end
|
57
57
|
end
|
58
|
+
|
59
|
+
describe :enable! do
|
60
|
+
let(:env) { ActionDispatch::TestRequest.new.env }
|
61
|
+
let(:action_double) { double(call: lambda { |env| [400, {}, 'SOMETHING WENT WRONG.'] }) }
|
62
|
+
before { Gaffe.enable! }
|
63
|
+
|
64
|
+
specify do
|
65
|
+
expect(Gaffe).to receive(:errors_controller_for_request).with(env).and_call_original
|
66
|
+
expect(Gaffe::ErrorsController).to receive(:action).with(:show).and_return(action_double)
|
67
|
+
expect(action_double).to receive(:call).with(env)
|
68
|
+
|
69
|
+
# This is the line Rails itself calls
|
70
|
+
# https://github.com/rails/rails/blob/fee49a10492efc99409c03f7096d5bd3377b0bbc/actionpack/lib/action_dispatch/middleware/show_exceptions.rb#L43
|
71
|
+
Rails.application.config.exceptions_app.call(env)
|
72
|
+
end
|
73
|
+
end
|
58
74
|
end
|
59
75
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
2
2
|
|
3
|
+
require 'coveralls'
|
4
|
+
Coveralls.wear!
|
5
|
+
|
3
6
|
require 'rspec'
|
4
7
|
require "action_controller/railtie"
|
5
8
|
require 'gaffe'
|
@@ -9,6 +12,9 @@ RSpec.configure do |config|
|
|
9
12
|
# Fake Rails.root
|
10
13
|
Rails.stub(:root).and_return(RAILS_ROOT)
|
11
14
|
|
15
|
+
# Fake Rails.application
|
16
|
+
Rails.stub(:application).and_return OpenStruct.new(config: OpenStruct.new, env_config: {})
|
17
|
+
|
12
18
|
# Make sure we clear memoized variables before each test
|
13
19
|
[:@configuration].each do |variable|
|
14
20
|
Gaffe.send :remove_instance_variable, variable if Gaffe.instance_variable_defined?(variable)
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gaffe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0
|
5
|
-
prerelease:
|
4
|
+
version: '1.0'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Rémi Prévost
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-10-17 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: bundler
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ~>
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ~>
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,23 +28,20 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rake
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - '>='
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '0'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: rspec
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ~>
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,25 +49,36 @@ dependencies:
|
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ~>
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: '2.14'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: coveralls
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
63
70
|
- !ruby/object:Gem::Dependency
|
64
71
|
name: rails
|
65
72
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
73
|
requirements:
|
68
|
-
- -
|
74
|
+
- - '>='
|
69
75
|
- !ruby/object:Gem::Version
|
70
76
|
version: 3.2.0
|
71
77
|
type: :runtime
|
72
78
|
prerelease: false
|
73
79
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
80
|
requirements:
|
76
|
-
- -
|
81
|
+
- - '>='
|
77
82
|
- !ruby/object:Gem::Version
|
78
83
|
version: 3.2.0
|
79
84
|
description: Gaffe handles Rails error pages in a clean, simple way.
|
@@ -115,33 +120,26 @@ files:
|
|
115
120
|
homepage: https://github.com/mirego/gaffe
|
116
121
|
licenses:
|
117
122
|
- BSD 3-Clause
|
123
|
+
metadata: {}
|
118
124
|
post_install_message:
|
119
125
|
rdoc_options: []
|
120
126
|
require_paths:
|
121
127
|
- lib
|
122
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
129
|
requirements:
|
125
|
-
- -
|
130
|
+
- - '>='
|
126
131
|
- !ruby/object:Gem::Version
|
127
132
|
version: '0'
|
128
|
-
segments:
|
129
|
-
- 0
|
130
|
-
hash: 843740072442851156
|
131
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
134
|
requirements:
|
134
|
-
- -
|
135
|
+
- - '>='
|
135
136
|
- !ruby/object:Gem::Version
|
136
137
|
version: '0'
|
137
|
-
segments:
|
138
|
-
- 0
|
139
|
-
hash: 843740072442851156
|
140
138
|
requirements: []
|
141
139
|
rubyforge_project:
|
142
|
-
rubygems_version: 1.
|
140
|
+
rubygems_version: 2.1.0
|
143
141
|
signing_key:
|
144
|
-
specification_version:
|
142
|
+
specification_version: 4
|
145
143
|
summary: Gaffe handles Rails error pages in a clean, simple way.
|
146
144
|
test_files:
|
147
145
|
- spec/gaffe/errors_spec.rb
|