vanilla 1.17.6 → 1.17.8
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/Rakefile +1 -1
- data/lib/vanilla/app.rb +8 -1
- data/lib/vanilla/config.rb +3 -1
- data/lib/vanilla/renderers/base.rb +6 -1
- data/lib/vanilla.rb +1 -1
- data/test/core/vanilla_presenting_test.rb +2 -2
- data/test/pristine_app/current_snip_test.rb +28 -0
- data/test/pristine_app/raise_errors_test.rb +67 -0
- metadata +5 -4
data/Rakefile
CHANGED
@@ -29,7 +29,7 @@ end
|
|
29
29
|
if Object.const_defined?(:Gem)
|
30
30
|
|
31
31
|
def files_for_inclusion
|
32
|
-
base_files = %w(Rakefile README .gemtest) + Dir.glob("{test,lib,bin,pristine_app}/**/*")
|
32
|
+
base_files = %w(Rakefile README .gemtest) + Dir.glob("{test,lib,bin,pristine_app}/**/*").select { |f| File.file?(f) }
|
33
33
|
files_to_ignore = File.readlines(".gitignore").inject([]) do |a,p|
|
34
34
|
path = p.strip
|
35
35
|
a += Dir.glob(path)
|
data/lib/vanilla/app.rb
CHANGED
@@ -6,6 +6,7 @@ module Vanilla
|
|
6
6
|
# be subclassed for each instance of Vanilla that you want to run.
|
7
7
|
class App
|
8
8
|
include Vanilla::Routing
|
9
|
+
class NotFound < RuntimeError; end
|
9
10
|
|
10
11
|
class << self
|
11
12
|
attr_reader :config
|
@@ -42,7 +43,11 @@ module Vanilla
|
|
42
43
|
|
43
44
|
begin
|
44
45
|
output = render_in_format(request.snip, request.part, request.format)
|
46
|
+
rescue NotFound => e
|
47
|
+
@response.status = 404
|
48
|
+
output = e.to_s
|
45
49
|
rescue => e
|
50
|
+
raise e if config.raise_errors
|
46
51
|
@response.status = 500
|
47
52
|
output = e.to_s + e.backtrace.join("\n")
|
48
53
|
end
|
@@ -116,6 +121,7 @@ module Vanilla
|
|
116
121
|
renderer_instance = renderer_for(snip).new(self)
|
117
122
|
yield renderer_instance
|
118
123
|
rescue Exception => e
|
124
|
+
raise e if config.raise_errors
|
119
125
|
response.status = 500
|
120
126
|
snip_name = snip ? snip.name : nil
|
121
127
|
"<pre>[Error rendering '#{snip_name}' - \"" +
|
@@ -124,6 +130,7 @@ module Vanilla
|
|
124
130
|
end
|
125
131
|
|
126
132
|
def render_in_format(snip, part=nil, format=nil)
|
133
|
+
format = nil unless snip
|
127
134
|
case format
|
128
135
|
when 'html', nil
|
129
136
|
layout = layout_for(snip)
|
@@ -137,7 +144,7 @@ module Vanilla
|
|
137
144
|
when 'text', 'atom', 'xml'
|
138
145
|
render(snip, part)
|
139
146
|
else
|
140
|
-
raise "Unknown format '#{format}'"
|
147
|
+
raise NotFound, "Unknown format '#{format}'"
|
141
148
|
end
|
142
149
|
end
|
143
150
|
|
data/lib/vanilla/config.rb
CHANGED
@@ -22,7 +22,8 @@ module Vanilla
|
|
22
22
|
:soups,
|
23
23
|
:renderers,
|
24
24
|
:default_layout_snip,
|
25
|
-
:default_renderer
|
25
|
+
:default_renderer,
|
26
|
+
:raise_errors
|
26
27
|
|
27
28
|
def initialize
|
28
29
|
@root = Dir.pwd
|
@@ -30,6 +31,7 @@ module Vanilla
|
|
30
31
|
@soups = ["soups/base", "soups/system"]
|
31
32
|
@default_layout_snip = "layout"
|
32
33
|
@default_renderer = Vanilla::Renderers::Base
|
34
|
+
@raise_errors = false
|
33
35
|
@renderers = {
|
34
36
|
"base" => Vanilla::Renderers::Base,
|
35
37
|
"markdown" => Vanilla::Renderers::Markdown,
|
@@ -95,7 +95,12 @@ module Vanilla
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def render_without_including_snips(snip, part=:content)
|
98
|
-
|
98
|
+
if content = raw_content(snip, part)
|
99
|
+
process_text(content)
|
100
|
+
else
|
101
|
+
app.response.status = 404
|
102
|
+
%{Couldn't find part "#{part}" for snip "#{snip.name}"}
|
103
|
+
end
|
99
104
|
end
|
100
105
|
|
101
106
|
# Handles processing the text of the content.
|
data/lib/vanilla.rb
CHANGED
@@ -132,8 +132,8 @@ context "When presenting" do
|
|
132
132
|
end
|
133
133
|
|
134
134
|
context "requesting an unknown format" do
|
135
|
-
should "return a
|
136
|
-
assert_response_status
|
135
|
+
should "return a 404 status code" do
|
136
|
+
assert_response_status 404, "/test.monkey"
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
@@ -43,4 +43,32 @@ context "The current_snip dynasnip" do
|
|
43
43
|
assert_equal 404, page.status_code
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
context "when the requested snip with extension is missing" do
|
48
|
+
setup do
|
49
|
+
set_main_template "<layout>{current_snip}</layout>"
|
50
|
+
visit "/monkey.png"
|
51
|
+
end
|
52
|
+
|
53
|
+
should "set the response code to 404" do
|
54
|
+
assert_equal 404, page.status_code
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "when the requested part of a snip is missing" do
|
59
|
+
setup do
|
60
|
+
set_main_template "<layout>{current_snip}</layout>"
|
61
|
+
create_snip :name => "test", :content => "test"
|
62
|
+
|
63
|
+
visit "/test/monkey"
|
64
|
+
end
|
65
|
+
|
66
|
+
should "render an explanatory message" do
|
67
|
+
assert page.has_content?(%{Couldn't find part "monkey" for snip "test"})
|
68
|
+
end
|
69
|
+
|
70
|
+
should "set the response code to 404" do
|
71
|
+
assert_equal 404, page.status_code
|
72
|
+
end
|
73
|
+
end
|
46
74
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
context "The rack app" do
|
4
|
+
should "handle exceptions by default" do
|
5
|
+
create_snip :name => "test", :content => "test"
|
6
|
+
|
7
|
+
app.stubs(:render_in_format).raises("exception-message")
|
8
|
+
|
9
|
+
assert_nothing_raised { visit "/test" }
|
10
|
+
assert_equal 500, page.status_code
|
11
|
+
end
|
12
|
+
|
13
|
+
should "handle exceptions when raise_errors is false" do
|
14
|
+
create_snip :name => "test", :content => "test"
|
15
|
+
|
16
|
+
app.stubs(:render_in_format).raises("exception-message")
|
17
|
+
|
18
|
+
with_raise_errors(false) do
|
19
|
+
assert_nothing_raised { visit "/test" }
|
20
|
+
assert_equal 500, page.status_code
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
should "raise exceptions when raise_errors is true" do
|
25
|
+
create_snip :name => "test", :content => "test"
|
26
|
+
|
27
|
+
app.stubs(:render_in_format).raises("exception-message")
|
28
|
+
|
29
|
+
with_raise_errors(true) do
|
30
|
+
assert_raises("exception-message") { visit "/test" }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
should "handle missing renderer by default" do
|
35
|
+
create_snip :name => "test", :content => "test", :render_as => "unknown"
|
36
|
+
|
37
|
+
assert_nothing_raised { visit "/test" }
|
38
|
+
assert_equal 500, page.status_code
|
39
|
+
end
|
40
|
+
|
41
|
+
should "handle missing renderer when raise_errors is false" do
|
42
|
+
create_snip :name => "test", :content => "test", :render_as => "unknown"
|
43
|
+
|
44
|
+
with_raise_errors(false) do
|
45
|
+
assert_nothing_raised { visit "/test" }
|
46
|
+
assert_equal 500, page.status_code
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
should "raise exceptions when raise_errors is true" do
|
51
|
+
create_snip :name => "test", :content => "test", :render_as => "unknown"
|
52
|
+
|
53
|
+
with_raise_errors(true) do
|
54
|
+
assert_raises("exception-message") { visit "/test" }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def with_raise_errors(raise_errors)
|
61
|
+
original_raise_errors = app.config.raise_errors
|
62
|
+
app.config.raise_errors = raise_errors
|
63
|
+
yield
|
64
|
+
ensure
|
65
|
+
app.config.raise_errors = original_raise_errors
|
66
|
+
end
|
67
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vanilla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.17.
|
4
|
+
version: 1.17.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -252,6 +252,7 @@ files:
|
|
252
252
|
- test/pristine_app/link_to_current_snip_test.rb
|
253
253
|
- test/pristine_app/link_to_test.rb
|
254
254
|
- test/pristine_app/page_title_test.rb
|
255
|
+
- test/pristine_app/raise_errors_test.rb
|
255
256
|
- test/pristine_app/raw_test.rb
|
256
257
|
- test/pristine_app/site_test.rb
|
257
258
|
- test/pristine_app/test_helper.rb
|
@@ -329,7 +330,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
329
330
|
version: '0'
|
330
331
|
segments:
|
331
332
|
- 0
|
332
|
-
hash:
|
333
|
+
hash: 2864118613837164250
|
333
334
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
334
335
|
none: false
|
335
336
|
requirements:
|
@@ -338,7 +339,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
338
339
|
version: '0'
|
339
340
|
segments:
|
340
341
|
- 0
|
341
|
-
hash:
|
342
|
+
hash: 2864118613837164250
|
342
343
|
requirements: []
|
343
344
|
rubyforge_project: vanilla
|
344
345
|
rubygems_version: 1.8.23
|