rack-rescue 0.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.
- data/Users/dneighman/Projects/rack-rescue/Gemfile +15 -0
- data/Users/dneighman/Projects/rack-rescue/Gemfile.lock +93 -0
- data/Users/dneighman/Projects/rack-rescue/LICENSE +20 -0
- data/Users/dneighman/Projects/rack-rescue/README.textile +80 -0
- data/Users/dneighman/Projects/rack-rescue/Rakefile +26 -0
- data/Users/dneighman/Projects/rack-rescue/TODO.textile +7 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack-rescue.rb +1 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue.rb +93 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/default_exceptions.rb +16 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/exceptions.rb +107 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/handler.rb +124 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/responder.rb +21 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/error.development.html.erb +19 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/error.html.erb +15 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/error.text.erb +14 -0
- data/Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/not_found.text.erb +4 -0
- data/Users/dneighman/Projects/rack-rescue/rack-rescue.gemspec +26 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack-rescue_spec.rb +151 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/exceptions_spec.rb +85 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/alternate_exceptions.foo_env.html.erb +1 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/alternate_exceptions.html.erb +1 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/custom_exception.text.erb +1 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/error.xml.erb +5 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/inherit_from_error_backtrace.text.erb +4 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/inherit_from_error_header.text.erb +4 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/inherit_from_error_message.text.erb +4 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/not_found.text.erb +7 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/not_found.xml.erb +3 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/layouts/custom_error_layout.xml.erb +4 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/layouts/error.html.erb +7 -0
- data/Users/dneighman/Projects/rack-rescue/spec/rack/rescue/handler_spec.rb +112 -0
- data/Users/dneighman/Projects/rack-rescue/spec/spec.opts +2 -0
- data/Users/dneighman/Projects/rack-rescue/spec/spec_helper.rb +22 -0
- metadata +213 -0
@@ -0,0 +1 @@
|
|
1
|
+
In alternate_exceptions.foo_env.html.erb
|
@@ -0,0 +1 @@
|
|
1
|
+
In alternate_exceptions.html.erb
|
@@ -0,0 +1 @@
|
|
1
|
+
Custom Exception Template
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
2
|
+
|
3
|
+
describe Rack::Rescue::Handler do
|
4
|
+
subject { Rack::Rescue::Handler }
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
root = File.join(File.expand_path(::File.dirname(__FILE__)), "fixtures")
|
8
|
+
subject.roots << root
|
9
|
+
subject.push_paths(:error_templates, "alternate_errors", "**/*")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have a default format of :text" do
|
13
|
+
subject.default_format.should == :text
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should allow me to set a default format" do
|
17
|
+
df = subject.default_format
|
18
|
+
subject.default_format = :html
|
19
|
+
subject.default_format.should == :html
|
20
|
+
subject.default_format = df
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return true when asked if a template is present and it is" do
|
24
|
+
subject.template?(:not_found, :format => :text).should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return false when asked if a template is present and it's not" do
|
28
|
+
subject.template?(:never_was_here).should be_false
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should fetch a given template" do
|
32
|
+
subject.template(:not_found).should be_a_kind_of(Pancake::Mixins::Render::Template)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should set the template format via the format option" do
|
36
|
+
subject.template(:not_found, :format => :xml).should_not be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "render_error" do
|
40
|
+
class RackRescueCustom1 < StandardError; end
|
41
|
+
class RackRescueCustom2 < StandardError; end
|
42
|
+
class RackRescueCustom3 < StandardError; end
|
43
|
+
|
44
|
+
before do
|
45
|
+
@handler = Rack::Rescue::Handler.new(RackRescueCustom1, :template => "custom_exception", :status => 412)
|
46
|
+
begin
|
47
|
+
raise RackRescueCustom1, "Custom Error Message"
|
48
|
+
rescue => e
|
49
|
+
@exception = e
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should render the template that the exception is associated with" do
|
54
|
+
result = @handler.render_error(@exception)
|
55
|
+
result.should include("Custom Exception Template")
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should fallback to the normal error template if the specified template cannot be found" do
|
59
|
+
@handler.default_template = "not_a_real_template"
|
60
|
+
result = @handler.render_error(@exception)
|
61
|
+
result.should include("Error")
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should allow me to inherit from error and overwrite the error_header" do
|
65
|
+
@handler.default_template = "inherit_from_error_header"
|
66
|
+
result = @handler.render_error(@exception)
|
67
|
+
result.should include("Overwritten Error Header")
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should allow me to inherit from error and overwrite the error_message" do
|
71
|
+
@handler.default_template = "inherit_from_error_message"
|
72
|
+
result = @handler.render_error(@exception)
|
73
|
+
result.should include("Overwritten Error Message")
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should allow me to inherit from error and overwrite the error_backtrace" do
|
77
|
+
@handler.default_template = "inherit_from_error_backtrace"
|
78
|
+
result = @handler.render_error(@exception)
|
79
|
+
result.should include("Overwritten Error Backtrace")
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should allow me to overwrite the default format for the handler" do
|
83
|
+
handler = Rack::Rescue::Handler.new(RackRescueCustom1, :template => "custom_exception", :status => 412, :format => :html)
|
84
|
+
result = handler.render_error(@exception)
|
85
|
+
result.should include("<h1>412 Error")
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should render the exception using the foo_env error template" do
|
89
|
+
begin
|
90
|
+
orig_env = ENV['RACK_ENV']
|
91
|
+
ENV['RACK_ENV'] = "foo_env"
|
92
|
+
handler = Rack::Rescue::Handler.new(RackRescueCustom1, :template => "alternate_exceptions", :format => :html)
|
93
|
+
result = handler.render_error(@exception, :format => :html)
|
94
|
+
result.should include("In alternate_exceptions.foo_env.html.erb")
|
95
|
+
ensure
|
96
|
+
ENV['RACK_ENV'] = orig_env
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should render the exception using the standard error template" do
|
101
|
+
begin
|
102
|
+
orig_env = ENV['RACK_ENV']
|
103
|
+
ENV['RACK_ENV'] = nil
|
104
|
+
handler = Rack::Rescue::Handler.new(RackRescueCustom1, :template => "alternate_exceptions", :format => :html)
|
105
|
+
result = handler.render_error(@exception)
|
106
|
+
result.should include("In alternate_exceptions.html.erb")
|
107
|
+
ensure
|
108
|
+
ENV['RACK_ENV'] = orig_env
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'rack-rescue'
|
4
|
+
require 'spec'
|
5
|
+
require 'spec/autorun'
|
6
|
+
require 'wrapt'
|
7
|
+
|
8
|
+
Spec::Runner.configure do |config|
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
class MyNotFoundException < StandardError; end
|
13
|
+
|
14
|
+
SUCCESS_APP = lambda{|e| Rack::Response.new("ok").finish }
|
15
|
+
|
16
|
+
FAIL_APP = lambda do |e|
|
17
|
+
if $fail_with
|
18
|
+
raise $fail_with
|
19
|
+
else
|
20
|
+
raise RuntimeError
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-rescue
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Daniel Neighman
|
14
|
+
autorequire: rack/rescue
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-05-30 00:00:00 +10:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 15
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 2
|
31
|
+
version: "0.2"
|
32
|
+
name: pancake
|
33
|
+
requirement: *id001
|
34
|
+
prerelease: false
|
35
|
+
type: :runtime
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 15
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 2
|
46
|
+
version: "0.2"
|
47
|
+
name: any_view
|
48
|
+
requirement: *id002
|
49
|
+
prerelease: false
|
50
|
+
type: :runtime
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
name: rake
|
62
|
+
requirement: *id003
|
63
|
+
prerelease: false
|
64
|
+
type: :runtime
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
name: hashie
|
76
|
+
requirement: *id004
|
77
|
+
prerelease: false
|
78
|
+
type: :runtime
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
name: dirge
|
90
|
+
requirement: *id005
|
91
|
+
prerelease: false
|
92
|
+
type: :runtime
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
name: rack
|
104
|
+
requirement: *id006
|
105
|
+
prerelease: false
|
106
|
+
type: :runtime
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
hash: 3
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
version: "0"
|
117
|
+
name: extlib
|
118
|
+
requirement: *id007
|
119
|
+
prerelease: false
|
120
|
+
type: :runtime
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
hash: 31
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
- 10
|
131
|
+
version: "0.10"
|
132
|
+
name: tilt
|
133
|
+
requirement: *id008
|
134
|
+
prerelease: false
|
135
|
+
type: :runtime
|
136
|
+
description: Rescue Handler for Rack
|
137
|
+
email: has.sox@gmail.com
|
138
|
+
executables: []
|
139
|
+
|
140
|
+
extensions: []
|
141
|
+
|
142
|
+
extra_rdoc_files: []
|
143
|
+
|
144
|
+
files:
|
145
|
+
- /Users/dneighman/Projects/rack-rescue/Gemfile
|
146
|
+
- /Users/dneighman/Projects/rack-rescue/Gemfile.lock
|
147
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/default_exceptions.rb
|
148
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/exceptions.rb
|
149
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/handler.rb
|
150
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/responder.rb
|
151
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/error.development.html.erb
|
152
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/error.html.erb
|
153
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/error.text.erb
|
154
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue/templates/rack_rescue_templates/not_found.text.erb
|
155
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack/rescue.rb
|
156
|
+
- /Users/dneighman/Projects/rack-rescue/lib/rack-rescue.rb
|
157
|
+
- /Users/dneighman/Projects/rack-rescue/LICENSE
|
158
|
+
- /Users/dneighman/Projects/rack-rescue/rack-rescue.gemspec
|
159
|
+
- /Users/dneighman/Projects/rack-rescue/Rakefile
|
160
|
+
- /Users/dneighman/Projects/rack-rescue/README.textile
|
161
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/exceptions_spec.rb
|
162
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/alternate_exceptions.foo_env.html.erb
|
163
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/alternate_exceptions.html.erb
|
164
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/custom_exception.text.erb
|
165
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/error.xml.erb
|
166
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/inherit_from_error_backtrace.text.erb
|
167
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/inherit_from_error_header.text.erb
|
168
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/inherit_from_error_message.text.erb
|
169
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/not_found.text.erb
|
170
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/alternate_errors/not_found.xml.erb
|
171
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/layouts/custom_error_layout.xml.erb
|
172
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/fixtures/layouts/error.html.erb
|
173
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack/rescue/handler_spec.rb
|
174
|
+
- /Users/dneighman/Projects/rack-rescue/spec/rack-rescue_spec.rb
|
175
|
+
- /Users/dneighman/Projects/rack-rescue/spec/spec.opts
|
176
|
+
- /Users/dneighman/Projects/rack-rescue/spec/spec_helper.rb
|
177
|
+
- /Users/dneighman/Projects/rack-rescue/TODO.textile
|
178
|
+
has_rdoc: true
|
179
|
+
homepage: http://github.com/hassox/rack-rescue
|
180
|
+
licenses: []
|
181
|
+
|
182
|
+
post_install_message:
|
183
|
+
rdoc_options:
|
184
|
+
- --charset=UTF-8
|
185
|
+
require_paths:
|
186
|
+
- lib
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
none: false
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
hash: 3
|
193
|
+
segments:
|
194
|
+
- 0
|
195
|
+
version: "0"
|
196
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
hash: 3
|
202
|
+
segments:
|
203
|
+
- 0
|
204
|
+
version: "0"
|
205
|
+
requirements: []
|
206
|
+
|
207
|
+
rubyforge_project:
|
208
|
+
rubygems_version: 1.3.7
|
209
|
+
signing_key:
|
210
|
+
specification_version: 3
|
211
|
+
summary: Rescue Handler for Rack
|
212
|
+
test_files: []
|
213
|
+
|