roda 3.58.0 → 3.59.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 +4 -4
- data/CHANGELOG +6 -0
- data/doc/release_notes/3.59.0.txt +17 -0
- data/lib/roda/plugins/additional_render_engines.rb +61 -0
- data/lib/roda/plugins/assets.rb +1 -1
- data/lib/roda/plugins/delete_empty_headers.rb +3 -3
- data/lib/roda/plugins/mail_processor.rb +4 -5
- data/lib/roda/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 963e2d9ac538dbe97835ef65e2e2ba4184838664696bb084ce423a85ef23c205
|
|
4
|
+
data.tar.gz: d47a7f9c86357e99b0c9f470b6c33a32962df55189303020982af55d70907c7b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c84cb0ae8c66b537c0a7d32d83d9c5a639439b15fbc650d3569efab5e134e0883ba06183c7f17bfb379f4018060c7d276a5016431ae3e21d05c2db3801a85762
|
|
7
|
+
data.tar.gz: 0c9495ec5fe24b774512f6495f97f5bb4cf8189b964f21a04c5e880d4a536ade2e045c7131f0a54a7c1cd203fe142d53c6d7cde4cf223a8e8be4cb5c5475fede
|
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
= 3.59.0 (2022-08-12)
|
|
2
|
+
|
|
3
|
+
* Add additional_render_engines plugin, for considering multiple render engines for templates (jeremyevans)
|
|
4
|
+
|
|
5
|
+
* Fix typo in private method name in delete_empty_headers plugin (mculpt) (#279)
|
|
6
|
+
|
|
1
7
|
= 3.58.0 (2022-07-13)
|
|
2
8
|
|
|
3
9
|
* Add filter_common_logger plugin for skipping the logging of certain requests when using the common_logger plugin (jeremyevans)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* An additional_render_engines plugin has been added, for considering
|
|
4
|
+
multiple render engines for templates. If the template path does not
|
|
5
|
+
exist for the default render engine, then each additional render
|
|
6
|
+
engine will be checked, returning the first path that exists:
|
|
7
|
+
|
|
8
|
+
plugin :additional_render_engines, ['haml', 'str']
|
|
9
|
+
|
|
10
|
+
This is similar to the additional_view_directories plugin added in
|
|
11
|
+
3.53.0. Both plugins can be used if you want to consider multiple
|
|
12
|
+
view directories and multiple render engines.
|
|
13
|
+
|
|
14
|
+
= Other Improvements
|
|
15
|
+
|
|
16
|
+
* A typo in a private method name in the delete_empty_headers plugin
|
|
17
|
+
has been fixed.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
class Roda
|
|
5
|
+
module RodaPlugins
|
|
6
|
+
# The additional_render_engines plugin allows for specifying additional render
|
|
7
|
+
# engines to consider for templates. When rendering a template, it will
|
|
8
|
+
# first try the default template engine specified in the render plugin. If the
|
|
9
|
+
# template file to be rendered does not exist, it will try each additional render
|
|
10
|
+
# engine specified in this plugin, in order, using the path to the first
|
|
11
|
+
# template file that exists in the file system. If no such path is found, it
|
|
12
|
+
# uses the default path specified by the render plugin.
|
|
13
|
+
#
|
|
14
|
+
# Example:
|
|
15
|
+
#
|
|
16
|
+
# plugin :render # default engine is 'erb'
|
|
17
|
+
# plugin :additional_render_engines, ['haml', 'str']
|
|
18
|
+
#
|
|
19
|
+
# route do |r|
|
|
20
|
+
# # Will check the following in order, using path for first
|
|
21
|
+
# # template file that exists:
|
|
22
|
+
# # * views/t.erb
|
|
23
|
+
# # * views/t.haml
|
|
24
|
+
# # * views/t.str
|
|
25
|
+
# render :t
|
|
26
|
+
# end
|
|
27
|
+
module AdditionalRenderEngines
|
|
28
|
+
def self.load_dependencies(app, render_engines)
|
|
29
|
+
app.plugin :render
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Set the additional render engines to consider.
|
|
33
|
+
def self.configure(app, render_engines)
|
|
34
|
+
app.opts[:additional_render_engines] = render_engines.dup.freeze
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
module InstanceMethods
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
# If the template path does not exist, try looking for the template
|
|
41
|
+
# using each of the render engines, in order, returning
|
|
42
|
+
# the first path that exists. If no template path exists for the
|
|
43
|
+
# default any or any additional engines, return the original path.
|
|
44
|
+
def template_path(opts)
|
|
45
|
+
orig_path = super
|
|
46
|
+
|
|
47
|
+
unless File.file?(orig_path)
|
|
48
|
+
self.opts[:additional_render_engines].each do |engine|
|
|
49
|
+
path = super(opts.merge(:engine=>engine))
|
|
50
|
+
return path if File.file?(path)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
orig_path
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
register_plugin(:additional_render_engines, AdditionalRenderEngines)
|
|
60
|
+
end
|
|
61
|
+
end
|
data/lib/roda/plugins/assets.rb
CHANGED
|
@@ -147,7 +147,7 @@ class Roda
|
|
|
147
147
|
# If you have the yuicompressor gem installed and working, it will be used
|
|
148
148
|
# automatically to compress your javascript and css assets. For javascript
|
|
149
149
|
# assets, if yuicompressor is not available, the plugin will check for
|
|
150
|
-
#
|
|
150
|
+
# closure-compiler, uglifier, and minjs and use the first one that works.
|
|
151
151
|
# If no compressors are available, the assets will just be concatenated
|
|
152
152
|
# together and not compressed during compilation. You can use the
|
|
153
153
|
# :css_compressor and :js_compressor options to specify the compressor to use.
|
|
@@ -13,18 +13,18 @@ class Roda
|
|
|
13
13
|
module ResponseMethods
|
|
14
14
|
# Delete any empty headers when calling finish
|
|
15
15
|
def finish
|
|
16
|
-
|
|
16
|
+
delete_empty_headers(super)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
# Delete any empty headers when calling finish_with_body
|
|
20
20
|
def finish_with_body(_)
|
|
21
|
-
|
|
21
|
+
delete_empty_headers(super)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
26
|
# Delete any empty headers from response
|
|
27
|
-
def
|
|
27
|
+
def delete_empty_headers(res)
|
|
28
28
|
res[1].delete_if{|_, v| v.is_a?(String) && v.empty?}
|
|
29
29
|
res
|
|
30
30
|
end
|
|
@@ -465,7 +465,11 @@ class Roda
|
|
|
465
465
|
def #{field}(address, &block)
|
|
466
466
|
on(:#{field}=>address, &block)
|
|
467
467
|
end
|
|
468
|
+
END
|
|
469
|
+
|
|
470
|
+
next if [:rcpt, :text, :body, :subject].include?(field)
|
|
468
471
|
|
|
472
|
+
class_eval(<<-END, __FILE__, __LINE__+1)
|
|
469
473
|
private
|
|
470
474
|
|
|
471
475
|
def match_#{field}(address)
|
|
@@ -474,11 +478,6 @@ class Roda
|
|
|
474
478
|
END
|
|
475
479
|
end
|
|
476
480
|
|
|
477
|
-
undef_method :match_rcpt
|
|
478
|
-
undef_method :match_text
|
|
479
|
-
undef_method :match_body
|
|
480
|
-
undef_method :match_subject
|
|
481
|
-
|
|
482
481
|
# Same as +header+, but also mark the message as being handled.
|
|
483
482
|
def handle_header(key, value=nil)
|
|
484
483
|
header(key, value) do |*args|
|
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.59.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-08-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rack
|
|
@@ -230,6 +230,7 @@ extra_rdoc_files:
|
|
|
230
230
|
- doc/release_notes/3.56.0.txt
|
|
231
231
|
- doc/release_notes/3.57.0.txt
|
|
232
232
|
- doc/release_notes/3.58.0.txt
|
|
233
|
+
- doc/release_notes/3.59.0.txt
|
|
233
234
|
- doc/release_notes/3.6.0.txt
|
|
234
235
|
- doc/release_notes/3.7.0.txt
|
|
235
236
|
- doc/release_notes/3.8.0.txt
|
|
@@ -295,6 +296,7 @@ files:
|
|
|
295
296
|
- doc/release_notes/3.56.0.txt
|
|
296
297
|
- doc/release_notes/3.57.0.txt
|
|
297
298
|
- doc/release_notes/3.58.0.txt
|
|
299
|
+
- doc/release_notes/3.59.0.txt
|
|
298
300
|
- doc/release_notes/3.6.0.txt
|
|
299
301
|
- doc/release_notes/3.7.0.txt
|
|
300
302
|
- doc/release_notes/3.8.0.txt
|
|
@@ -306,6 +308,7 @@ files:
|
|
|
306
308
|
- lib/roda/plugins/_before_hook.rb
|
|
307
309
|
- lib/roda/plugins/_optimized_matching.rb
|
|
308
310
|
- lib/roda/plugins/_symbol_regexp_matchers.rb
|
|
311
|
+
- lib/roda/plugins/additional_render_engines.rb
|
|
309
312
|
- lib/roda/plugins/additional_view_directories.rb
|
|
310
313
|
- lib/roda/plugins/all_verbs.rb
|
|
311
314
|
- lib/roda/plugins/assets.rb
|