roda 3.54.0 → 3.55.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/doc/release_notes/3.55.0.txt +12 -0
- data/lib/roda/plugins/chunked.rb +1 -1
- data/lib/roda/plugins/middleware.rb +17 -2
- data/lib/roda/plugins/render.rb +5 -3
- data/lib/roda/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b862c4eb1dcca9fbbf0ccacc130779fdecf610a5a064ef94c17384d073e29dd
|
4
|
+
data.tar.gz: 1e9a991190a6572283350bf1941fca8b83f8496bc519156d5ec3cc5d613d2407
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55fdc91ab21dbb1cf6884ee6b0384ef15db41f830d704ec6c445435ec76e302cb166f18c6f032390193c6d43d6922c7762d03768fd5c22188c3c7f937dc21d4a
|
7
|
+
data.tar.gz: d1272f1fc0e2707d2daf590ea71a4970ae2b133f0b4ba669e60296d6900422d3746bff8722d44eb636df5aefab0bd6b51382b88de1265924c4243322646335e7
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
= 3.55.0 (2022-04-12)
|
2
|
+
|
3
|
+
* Allow passing blocks to the view method in the render plugin (jeremyevans) (#262)
|
4
|
+
|
5
|
+
* Add :forward_response_headers middleware plugin option to use app headers as default for response (janko) (#259)
|
6
|
+
|
1
7
|
= 3.54.0 (2022-03-14)
|
2
8
|
|
3
9
|
* Make chunked plugin not use Transfer-Encoding: chunked by default (jeremyevans)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* A :forward_response_headers option has been added to the middleware
|
4
|
+
plugin, which uses the response headers added by the middleware
|
5
|
+
as default response headers even if the middleware does not handle
|
6
|
+
the response. Response headers set by the underlying application
|
7
|
+
take precedence over response headers set by the middleware.
|
8
|
+
|
9
|
+
* The render plugin view method now accepts a block and will pass the
|
10
|
+
block to the underlying render method call. This is useful for
|
11
|
+
rendering a template that yields inside of an existing layout.
|
12
|
+
Previously, you had to nest render calls to do that.
|
data/lib/roda/plugins/chunked.rb
CHANGED
@@ -215,7 +215,7 @@ class Roda
|
|
215
215
|
# If chunking by default, call chunked if it hasn't yet been
|
216
216
|
# called and chunking is not specifically disabled.
|
217
217
|
def view(*a)
|
218
|
-
if opts[:chunk_by_default] && !defined?(@_chunked)
|
218
|
+
if opts[:chunk_by_default] && !defined?(@_chunked) && !defined?(yield)
|
219
219
|
chunked(*a)
|
220
220
|
else
|
221
221
|
super
|
@@ -73,11 +73,16 @@ class Roda
|
|
73
73
|
# and rack response for all requests passing through the middleware,
|
74
74
|
# after either the middleware or next app handles the request
|
75
75
|
# and returns a response.
|
76
|
+
# :forward_response_headers :: Whether changes to the response headers made inside
|
77
|
+
# the middleware's route block should be applied to the
|
78
|
+
# final response when the request is forwarded to the app.
|
79
|
+
# Defaults to false.
|
76
80
|
def self.configure(app, opts={}, &block)
|
77
81
|
app.opts[:middleware_env_var] = opts[:env_var] if opts.has_key?(:env_var)
|
78
82
|
app.opts[:middleware_env_var] ||= 'roda.forward_next'
|
79
83
|
app.opts[:middleware_configure] = block if block
|
80
84
|
app.opts[:middleware_handle_result] = opts[:handle_result]
|
85
|
+
app.opts[:middleware_forward_response_headers] = opts[:forward_response_headers]
|
81
86
|
end
|
82
87
|
|
83
88
|
# Forwarder instances are what is actually used as middleware.
|
@@ -108,6 +113,10 @@ class Roda
|
|
108
113
|
|
109
114
|
if call_next
|
110
115
|
res = @app.call(env)
|
116
|
+
|
117
|
+
if modified_headers = env.delete('roda.response_headers')
|
118
|
+
res[1] = modified_headers.merge(res[1])
|
119
|
+
end
|
111
120
|
end
|
112
121
|
|
113
122
|
if handle_result = @mid.opts[:middleware_handle_result]
|
@@ -135,7 +144,10 @@ class Roda
|
|
135
144
|
def call(&block)
|
136
145
|
super do |r|
|
137
146
|
res = instance_exec(r, &block) # call Fallback
|
138
|
-
|
147
|
+
if r.forward_next
|
148
|
+
r.env['roda.response_headers'] = response.headers if opts[:middleware_forward_response_headers]
|
149
|
+
throw :next, true
|
150
|
+
end
|
139
151
|
res
|
140
152
|
end
|
141
153
|
end
|
@@ -144,7 +156,10 @@ class Roda
|
|
144
156
|
# that the next middleware is called.
|
145
157
|
def _roda_run_main_route(r)
|
146
158
|
res = super
|
147
|
-
|
159
|
+
if r.forward_next
|
160
|
+
r.env['roda.response_headers'] = response.headers if opts[:middleware_forward_response_headers]
|
161
|
+
throw :next, true
|
162
|
+
end
|
148
163
|
res
|
149
164
|
end
|
150
165
|
end
|
data/lib/roda/plugins/render.rb
CHANGED
@@ -495,8 +495,10 @@ class Roda
|
|
495
495
|
|
496
496
|
# Render the given template. If there is a default layout
|
497
497
|
# for the class, take the result of the template rendering
|
498
|
-
# and render it inside the layout.
|
499
|
-
|
498
|
+
# and render it inside the layout. Blocks passed to view
|
499
|
+
# are passed to render when rendering the template.
|
500
|
+
# See Render for details.
|
501
|
+
def view(template, opts = (content = _optimized_view_content(template) unless defined?(yield); OPTS), &block)
|
500
502
|
if content
|
501
503
|
# First, check if the optimized layout method has already been created,
|
502
504
|
# and use it if so. This way avoids the extra conditional and local variable
|
@@ -516,7 +518,7 @@ class Roda
|
|
516
518
|
end
|
517
519
|
else
|
518
520
|
opts = parse_template_opts(template, opts)
|
519
|
-
content = opts[:content] || render_template(opts)
|
521
|
+
content = opts[:content] || render_template(opts, &block)
|
520
522
|
end
|
521
523
|
|
522
524
|
if layout_opts = view_layout_opts(opts)
|
data/lib/roda/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.55.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: sassc
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -212,6 +212,7 @@ extra_rdoc_files:
|
|
212
212
|
- doc/release_notes/3.52.0.txt
|
213
213
|
- doc/release_notes/3.53.0.txt
|
214
214
|
- doc/release_notes/3.54.0.txt
|
215
|
+
- doc/release_notes/3.55.0.txt
|
215
216
|
- doc/release_notes/3.6.0.txt
|
216
217
|
- doc/release_notes/3.7.0.txt
|
217
218
|
- doc/release_notes/3.8.0.txt
|
@@ -273,6 +274,7 @@ files:
|
|
273
274
|
- doc/release_notes/3.52.0.txt
|
274
275
|
- doc/release_notes/3.53.0.txt
|
275
276
|
- doc/release_notes/3.54.0.txt
|
277
|
+
- doc/release_notes/3.55.0.txt
|
276
278
|
- doc/release_notes/3.6.0.txt
|
277
279
|
- doc/release_notes/3.7.0.txt
|
278
280
|
- doc/release_notes/3.8.0.txt
|