roda 3.28.0 → 3.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +10 -0
- data/README.rdoc +10 -0
- data/doc/release_notes/3.29.0.txt +15 -0
- data/lib/roda.rb +1 -0
- data/lib/roda/plugins/caching.rb +2 -0
- data/lib/roda/plugins/common_logger.rb +1 -1
- data/lib/roda/plugins/exception_page.rb +7 -1
- data/lib/roda/plugins/indifferent_params.rb +2 -0
- data/lib/roda/version.rb +1 -1
- metadata +4 -214
- data/Rakefile +0 -108
- data/doc/release_notes/1.0.0.txt +0 -329
- data/doc/release_notes/1.1.0.txt +0 -226
- data/doc/release_notes/1.2.0.txt +0 -406
- data/doc/release_notes/1.3.0.txt +0 -109
- data/doc/release_notes/2.0.0.txt +0 -75
- data/doc/release_notes/2.1.0.txt +0 -124
- data/doc/release_notes/2.10.0.txt +0 -27
- data/doc/release_notes/2.11.0.txt +0 -70
- data/doc/release_notes/2.12.0.txt +0 -40
- data/doc/release_notes/2.13.0.txt +0 -10
- data/doc/release_notes/2.14.0.txt +0 -44
- data/doc/release_notes/2.15.0.txt +0 -53
- data/doc/release_notes/2.16.0.txt +0 -48
- data/doc/release_notes/2.17.0.txt +0 -62
- data/doc/release_notes/2.18.0.txt +0 -69
- data/doc/release_notes/2.19.0.txt +0 -30
- data/doc/release_notes/2.2.0.txt +0 -97
- data/doc/release_notes/2.20.0.txt +0 -5
- data/doc/release_notes/2.21.0.txt +0 -17
- data/doc/release_notes/2.22.0.txt +0 -41
- data/doc/release_notes/2.23.0.txt +0 -29
- data/doc/release_notes/2.24.0.txt +0 -65
- data/doc/release_notes/2.25.0.txt +0 -14
- data/doc/release_notes/2.26.0.txt +0 -13
- data/doc/release_notes/2.27.0.txt +0 -56
- data/doc/release_notes/2.28.0.txt +0 -17
- data/doc/release_notes/2.29.0.txt +0 -156
- data/doc/release_notes/2.3.0.txt +0 -109
- data/doc/release_notes/2.4.0.txt +0 -55
- data/doc/release_notes/2.5.0.txt +0 -23
- data/doc/release_notes/2.5.1.txt +0 -4
- data/doc/release_notes/2.6.0.txt +0 -21
- data/doc/release_notes/2.7.0.txt +0 -75
- data/doc/release_notes/2.8.0.txt +0 -44
- data/doc/release_notes/2.9.0.txt +0 -6
- data/spec/all.rb +0 -1
- data/spec/assets/css/app.scss +0 -1
- data/spec/assets/css/no_access.css +0 -1
- data/spec/assets/css/raw.css +0 -1
- data/spec/assets/js/head/app.js +0 -1
- data/spec/composition_spec.rb +0 -31
- data/spec/define_roda_method_spec.rb +0 -274
- data/spec/env_spec.rb +0 -11
- data/spec/freeze_spec.rb +0 -37
- data/spec/integration_spec.rb +0 -209
- data/spec/matchers_spec.rb +0 -832
- data/spec/opts_spec.rb +0 -42
- data/spec/plugin/_after_hook_spec.rb +0 -19
- data/spec/plugin/all_verbs_spec.rb +0 -29
- data/spec/plugin/assets_preloading_spec.rb +0 -98
- data/spec/plugin/assets_spec.rb +0 -745
- data/spec/plugin/backtracking_array_spec.rb +0 -42
- data/spec/plugin/branch_locals_spec.rb +0 -106
- data/spec/plugin/caching_spec.rb +0 -337
- data/spec/plugin/chunked_spec.rb +0 -201
- data/spec/plugin/class_level_routing_spec.rb +0 -164
- data/spec/plugin/class_matchers_spec.rb +0 -40
- data/spec/plugin/common_logger_spec.rb +0 -85
- data/spec/plugin/content_for_spec.rb +0 -162
- data/spec/plugin/content_security_policy_spec.rb +0 -175
- data/spec/plugin/cookies_spec.rb +0 -51
- data/spec/plugin/csrf_spec.rb +0 -111
- data/spec/plugin/default_headers_spec.rb +0 -82
- data/spec/plugin/default_status_spec.rb +0 -95
- data/spec/plugin/delay_build_spec.rb +0 -23
- data/spec/plugin/delegate_spec.rb +0 -23
- data/spec/plugin/delete_empty_headers_spec.rb +0 -27
- data/spec/plugin/direct_call_spec.rb +0 -28
- data/spec/plugin/disallow_file_uploads_spec.rb +0 -25
- data/spec/plugin/drop_body_spec.rb +0 -24
- data/spec/plugin/early_hints_spec.rb +0 -19
- data/spec/plugin/empty_root_spec.rb +0 -14
- data/spec/plugin/environments_spec.rb +0 -42
- data/spec/plugin/error_email_spec.rb +0 -97
- data/spec/plugin/error_handler_spec.rb +0 -216
- data/spec/plugin/error_mail_spec.rb +0 -93
- data/spec/plugin/exception_page_spec.rb +0 -168
- data/spec/plugin/flash_spec.rb +0 -121
- data/spec/plugin/h_spec.rb +0 -11
- data/spec/plugin/halt_spec.rb +0 -119
- data/spec/plugin/hash_matcher_spec.rb +0 -27
- data/spec/plugin/hash_routes_spec.rb +0 -535
- data/spec/plugin/head_spec.rb +0 -52
- data/spec/plugin/header_matchers_spec.rb +0 -98
- data/spec/plugin/heartbeat_spec.rb +0 -74
- data/spec/plugin/hooks_spec.rb +0 -152
- data/spec/plugin/indifferent_params_spec.rb +0 -14
- data/spec/plugin/json_parser_spec.rb +0 -141
- data/spec/plugin/json_spec.rb +0 -83
- data/spec/plugin/mail_processor_spec.rb +0 -451
- data/spec/plugin/mailer_spec.rb +0 -282
- data/spec/plugin/match_affix_spec.rb +0 -43
- data/spec/plugin/match_hook_spec.rb +0 -79
- data/spec/plugin/middleware_spec.rb +0 -237
- data/spec/plugin/middleware_stack_spec.rb +0 -81
- data/spec/plugin/module_include_spec.rb +0 -48
- data/spec/plugin/multi_route_spec.rb +0 -268
- data/spec/plugin/multi_run_spec.rb +0 -87
- data/spec/plugin/multi_view_spec.rb +0 -50
- data/spec/plugin/multibyte_string_matcher_spec.rb +0 -44
- data/spec/plugin/named_templates_spec.rb +0 -96
- data/spec/plugin/not_allowed_spec.rb +0 -69
- data/spec/plugin/not_found_spec.rb +0 -128
- data/spec/plugin/optimized_string_matchers_spec.rb +0 -43
- data/spec/plugin/padrino_render_spec.rb +0 -34
- data/spec/plugin/param_matchers_spec.rb +0 -69
- data/spec/plugin/params_capturing_spec.rb +0 -33
- data/spec/plugin/partials_spec.rb +0 -43
- data/spec/plugin/pass_spec.rb +0 -29
- data/spec/plugin/path_matchers_spec.rb +0 -42
- data/spec/plugin/path_rewriter_spec.rb +0 -45
- data/spec/plugin/path_spec.rb +0 -222
- data/spec/plugin/placeholder_string_matchers_spec.rb +0 -126
- data/spec/plugin/precompile_templates_spec.rb +0 -61
- data/spec/plugin/public_spec.rb +0 -85
- data/spec/plugin/render_each_spec.rb +0 -82
- data/spec/plugin/render_locals_spec.rb +0 -114
- data/spec/plugin/render_spec.rb +0 -912
- data/spec/plugin/request_aref_spec.rb +0 -51
- data/spec/plugin/request_headers_spec.rb +0 -39
- data/spec/plugin/response_request_spec.rb +0 -43
- data/spec/plugin/route_block_args_spec.rb +0 -86
- data/spec/plugin/route_csrf_spec.rb +0 -305
- data/spec/plugin/run_append_slash_spec.rb +0 -77
- data/spec/plugin/run_handler_spec.rb +0 -53
- data/spec/plugin/sessions_spec.rb +0 -452
- data/spec/plugin/shared_vars_spec.rb +0 -45
- data/spec/plugin/sinatra_helpers_spec.rb +0 -537
- data/spec/plugin/slash_path_empty_spec.rb +0 -22
- data/spec/plugin/static_routing_spec.rb +0 -192
- data/spec/plugin/static_spec.rb +0 -30
- data/spec/plugin/status_303_spec.rb +0 -28
- data/spec/plugin/status_handler_spec.rb +0 -158
- data/spec/plugin/streaming_spec.rb +0 -246
- data/spec/plugin/strip_path_prefix_spec.rb +0 -24
- data/spec/plugin/symbol_matchers_spec.rb +0 -51
- data/spec/plugin/symbol_status_spec.rb +0 -25
- data/spec/plugin/symbol_views_spec.rb +0 -32
- data/spec/plugin/timestamp_public_spec.rb +0 -85
- data/spec/plugin/type_routing_spec.rb +0 -348
- data/spec/plugin/typecast_params_spec.rb +0 -1370
- data/spec/plugin/unescape_path_spec.rb +0 -22
- data/spec/plugin/view_options_spec.rb +0 -170
- data/spec/plugin_spec.rb +0 -71
- data/spec/redirect_spec.rb +0 -41
- data/spec/request_spec.rb +0 -97
- data/spec/response_spec.rb +0 -199
- data/spec/route_spec.rb +0 -39
- data/spec/session_middleware_spec.rb +0 -129
- data/spec/session_spec.rb +0 -37
- data/spec/spec_helper.rb +0 -137
- data/spec/version_spec.rb +0 -14
- data/spec/views/_test.erb +0 -1
- data/spec/views/a.erb +0 -1
- data/spec/views/a.rdoc +0 -2
- data/spec/views/about.erb +0 -1
- data/spec/views/about.str +0 -1
- data/spec/views/about/_test.css.gz +0 -0
- data/spec/views/about/_test.erb +0 -1
- data/spec/views/about/_test.erb.gz +0 -0
- data/spec/views/about/comp_test.erb +0 -1
- data/spec/views/b.erb +0 -1
- data/spec/views/c.erb +0 -1
- data/spec/views/comp_layout.erb +0 -1
- data/spec/views/comp_test.erb +0 -1
- data/spec/views/content-yield.erb +0 -1
- data/spec/views/each.str +0 -1
- data/spec/views/home.erb +0 -2
- data/spec/views/home.str +0 -2
- data/spec/views/iv.erb +0 -1
- data/spec/views/layout-alternative.erb +0 -2
- data/spec/views/layout-yield.erb +0 -3
- data/spec/views/layout.erb +0 -2
- data/spec/views/layout.str +0 -2
- data/spec/views/multiple-layout.erb +0 -1
- data/spec/views/multiple.erb +0 -1
@@ -1,14 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* An error_mail plugin has been added for reporting exceptions raised
|
4
|
-
via email. This is similar to the existing error_email plugin, but
|
5
|
-
uses the mail library instead of net/smtp directly. If you are
|
6
|
-
already using the mail library and the error_email plugin in your
|
7
|
-
application, it's recommended to switch to the error_mail plugin.
|
8
|
-
Example:
|
9
|
-
|
10
|
-
plugin :error_mail, :to=>'to@example.com', :from=>'from@example.com'
|
11
|
-
plugin :error_handler do |e|
|
12
|
-
error_mail(e)
|
13
|
-
'Internal Server Error'
|
14
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* The csrf plugin now supports a :skip_middleware option, which adds
|
4
|
-
the methods without adding the middleware. This is designed for
|
5
|
-
cases where you are using multiple rack apps, where the rack_csrf
|
6
|
-
middleware is loaded in an earlier rack app, and you want to avoid
|
7
|
-
the duplicate CSRF checks.
|
8
|
-
|
9
|
-
= Other Improvements
|
10
|
-
|
11
|
-
* The type_routing plugin now supports using multiple extensions
|
12
|
-
where one extension is a suffix of another extension, such as
|
13
|
-
using gz and tar.gz.
|
@@ -1,56 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* String and Integer class matchers have been added. The
|
4
|
-
String class matches any non-empty segment and yields it as a
|
5
|
-
string. This is the same as the behavior of the symbol matchers,
|
6
|
-
but without the duplication. So instead of:
|
7
|
-
|
8
|
-
r.is "album", :album_name do |album_name|
|
9
|
-
end
|
10
|
-
|
11
|
-
you can now do:
|
12
|
-
|
13
|
-
r.is "album", String do |album_name|
|
14
|
-
end
|
15
|
-
|
16
|
-
This makes it a bit more intuitive that you want to match
|
17
|
-
any string, and avoids the redundancy between the symbol
|
18
|
-
name and block argument name.
|
19
|
-
|
20
|
-
The Integer class matches any integer segment (\d+) and yields it
|
21
|
-
as an integer:
|
22
|
-
|
23
|
-
r.is "album", Integer do |album_id|
|
24
|
-
# does not match "/albums/foo"
|
25
|
-
# matches "/albums/1", yielding 1 (not "1")
|
26
|
-
end
|
27
|
-
|
28
|
-
Previously, the :d matcher in the symbol_matchers plugin could
|
29
|
-
be used to only match integer segments, but it yielded results
|
30
|
-
as strings and not integers, so you still needed to convert the
|
31
|
-
type manually. Using Integer is a bit more intuitive than
|
32
|
-
using :d, and it handles the type conversion for you.
|
33
|
-
|
34
|
-
* A class_matchers plugin has been added for matching additional
|
35
|
-
classes, with user-specified regexps and type conversion. For
|
36
|
-
example, if you want to match YYYY-MM-DD segments and yield
|
37
|
-
them to the match blocks as ruby Date objects, you can do:
|
38
|
-
|
39
|
-
plugin :class_matchers
|
40
|
-
|
41
|
-
class_matcher(Date, /(\d\d\d\d)-(\d\d)-(\d\d)/) do |y, m, d|
|
42
|
-
[Date.new(y.to_i, m.to_i, d.to_i)]
|
43
|
-
end
|
44
|
-
|
45
|
-
and then in your routing tree, you can do:
|
46
|
-
|
47
|
-
r.on "posts", Date do |date|
|
48
|
-
# does not match "/posts/foo" or "/posts/2017-01"
|
49
|
-
# matches "/posts/2017-01-13", yielding Date.new(2017, 1, 13)
|
50
|
-
end
|
51
|
-
|
52
|
-
= Backwards Compatibility
|
53
|
-
|
54
|
-
* If you were using the Integer and String classes as matchers
|
55
|
-
before and expected them to always match, you'll need to
|
56
|
-
change your code to use true instead.
|
@@ -1,17 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* A status_303 plugin has been added, which changes the default
|
4
|
-
redirect status from 302 to 303 if the HTTP version is 1.1 and
|
5
|
-
the request is not a GET request.
|
6
|
-
|
7
|
-
= Other Improvements
|
8
|
-
|
9
|
-
* Roda is now optimized for ruby 2.3+ using frozen string literals
|
10
|
-
instead of constant references. This improves performance on ruby
|
11
|
-
2.3+, and decreases performance on ruby <2.3.
|
12
|
-
|
13
|
-
= Backwards Compatibility
|
14
|
-
|
15
|
-
* Many now unused internal constants are now deprecated, and
|
16
|
-
attempting to access them will result in deprecation warnings
|
17
|
-
on ruby 2.3+.
|
@@ -1,156 +0,0 @@
|
|
1
|
-
= Deprecated Features
|
2
|
-
|
3
|
-
Roda 2.29.0 will be the last minor release of Roda 2. Roda 3.0.0
|
4
|
-
will be released next month and will remove support for the following
|
5
|
-
deprecated features. All of these features will have deprecation
|
6
|
-
warnings if used in Roda 2.29.0.
|
7
|
-
|
8
|
-
* The use of placeholders in string matchers is now deprecated.
|
9
|
-
So code such as:
|
10
|
-
|
11
|
-
r.get "users/:user_id" do |id|
|
12
|
-
end
|
13
|
-
|
14
|
-
should be switched to using a class matcher such as String or
|
15
|
-
Integer:
|
16
|
-
|
17
|
-
r.get "users", Integer do |id|
|
18
|
-
end
|
19
|
-
|
20
|
-
or a symbol matcher:
|
21
|
-
|
22
|
-
r.get "users", :user_id do |id|
|
23
|
-
end
|
24
|
-
|
25
|
-
If you really want to keep support for placeholders in string
|
26
|
-
matchers, the support is available in the new
|
27
|
-
placeholder_string_matchers plugin.
|
28
|
-
|
29
|
-
* The :format, :opt, and :optd default symbol matchers are now
|
30
|
-
deprecated in the symbol_matchers plugin. These matchers
|
31
|
-
only made sense when placeholder string matchers are used,
|
32
|
-
which will no longer be the default behavior in Roda 3. These
|
33
|
-
methods can be defined manually if you are going to use the
|
34
|
-
placeholder_string_matchers plugin and still want to use
|
35
|
-
these symbol matchers:
|
36
|
-
|
37
|
-
symbol_matcher(:format, /(?:\.(\w+))?/)
|
38
|
-
symbol_matcher(:opt, /(?:\/([^\/]+))?/)
|
39
|
-
symbol_matcher(:optd, /(?:\/(\d+))?/)
|
40
|
-
|
41
|
-
* Ignoring unsupported match block return values is now deprecated.
|
42
|
-
Doing so can hide errors and make debugging more difficult. If you
|
43
|
-
get a deprecation warning related to this, just make sure the match
|
44
|
-
block returns nil or false to specify the match block return value
|
45
|
-
should be ignored.
|
46
|
-
|
47
|
-
* Treating unsupported matchers as always matching is now deprecated.
|
48
|
-
Doing so can hide errors and make debugging more difficult. If you
|
49
|
-
get a deprecation warning related to this, switch the matcher to
|
50
|
-
true instead of an unsupported object.
|
51
|
-
|
52
|
-
* The render plugin's handling of plugin level locals and merging of
|
53
|
-
template and layout locals is now deprecated. Users of these
|
54
|
-
features should switch to the new render_locals plugin.
|
55
|
-
|
56
|
-
* The view_options plugin's handling of per-branch view and layout
|
57
|
-
locals is now deprecated. Users of these feature should switch to
|
58
|
-
the new branch_locals plugin.
|
59
|
-
|
60
|
-
* The render plugin's support for Erubis escaping is now deprecated.
|
61
|
-
In Roda 3, the render plugin :escape option will use Erubi escaping.
|
62
|
-
Switch to using :escape=>:erubi temporarily to avoid the deprecation
|
63
|
-
warning.
|
64
|
-
|
65
|
-
* Using the render plugin to render a template that is outside one of
|
66
|
-
the allowed paths is now deprecated unless the :check_paths option
|
67
|
-
has been set to false. In Roda 3, the default behavior will change
|
68
|
-
to checking that template files are in one of the allowed paths.
|
69
|
-
|
70
|
-
* The :ext option in the render plugin is now deprecated, users should
|
71
|
-
switch to using the :engine option, which has always had priority.
|
72
|
-
|
73
|
-
* Using the :cache=>true option to the view/render method in the
|
74
|
-
render plugin is now deprecated if the :cache=>nil/false option
|
75
|
-
was given when loading the plugin. In Roda 3, the default behavior
|
76
|
-
will change so that the :cache=>nil/false plugin option still
|
77
|
-
allows caching via the :cache=>true method option. Users can use
|
78
|
-
the :explicit_cache=>true render plugin option instead of the
|
79
|
-
:cache=>nil render plugin option to work around the deprecation
|
80
|
-
warning.
|
81
|
-
|
82
|
-
* Attempting to use multi_route while routing with a namespace that
|
83
|
-
hasn't yet been defined is now deprecated. The previous behavior
|
84
|
-
was to ignore undefined namespaces, but that is more likely to
|
85
|
-
hide an error than be desired behavior. In Roda 3, using an
|
86
|
-
undefined namespace will raise an error.
|
87
|
-
|
88
|
-
* The streaming plugin's support for EventMachine is now deprecated,
|
89
|
-
as is related support for Stream#callback. The streaming plugin
|
90
|
-
will be much simpler in Roda 3 by dropping this support.
|
91
|
-
|
92
|
-
* Calling content_for in the content_for plugin multiple times with
|
93
|
-
the same argument is now deprecated unless the content_for
|
94
|
-
plugin :append option is used to specify behavior. The default
|
95
|
-
behavior in Roda 3 will change to appending to the existing
|
96
|
-
content instead of overwriting the existing content.
|
97
|
-
|
98
|
-
* The :host matcher in the header_matchers plugin is now deprecated
|
99
|
-
when using a regexp value unless the :host_matcher_captures app
|
100
|
-
option is used. In Roda 3, the :host matcher will automatically
|
101
|
-
yield any regexp captures to the match block.
|
102
|
-
|
103
|
-
* The :header matcher in the header_matchers plugin is now deprecated
|
104
|
-
unless the :header_matcher_prefix app option is used. In Roda 3,
|
105
|
-
the :header matcher will always prefix the argument given with
|
106
|
-
HTTP_.
|
107
|
-
|
108
|
-
* The websockets plugin is now deprecated. It was one of the less
|
109
|
-
commonly used plugins, and the tests for it were subject to race
|
110
|
-
conditions and failed occassionally, and even when they worked
|
111
|
-
they almost doubled the testing time. Anyone wanting to use it
|
112
|
-
should consider maintaining it as an external plugin.
|
113
|
-
|
114
|
-
* The per_thread_caching, static_path_info, and view_subdirs
|
115
|
-
plugins are now deprecated. static_path_info has been a no-op since
|
116
|
-
Roda 3, view_subdirs is just an alias for view_options, and
|
117
|
-
per_thread_caching doesn't change behavior and is unlikely to
|
118
|
-
significantly increase performance.
|
119
|
-
|
120
|
-
* Additional internal constants are now deprecated. Deprecation
|
121
|
-
warnings for accessing these constants will only be displayed on
|
122
|
-
ruby 2.3+.
|
123
|
-
|
124
|
-
= Forward Compatibility
|
125
|
-
|
126
|
-
Roda 3.0.0 will also include some behavior changes which will not
|
127
|
-
have deprecation warnings:
|
128
|
-
|
129
|
-
* Ruby 1.8.7 support will be dropped. Ruby 1.9.2 will be the new
|
130
|
-
minimum supported version.
|
131
|
-
|
132
|
-
* Subclassing a Roda app that uses the render plugin will always
|
133
|
-
use a copy of the superclass's template cache.
|
134
|
-
|
135
|
-
* The assets plugin will default to using subresource integrity
|
136
|
-
using SHA256 for compiled assets, and using SHA256 instead of
|
137
|
-
SHA1 for compiled asset hashes.
|
138
|
-
|
139
|
-
* Using an Roda app as middleware will now always use a subclass
|
140
|
-
of the app for the middleware.
|
141
|
-
|
142
|
-
* public_send will be used instead of send internally unless it is
|
143
|
-
expected that private methods will be called.
|
144
|
-
|
145
|
-
* The match methods added by the symbol_matchers and hash_matchers
|
146
|
-
plugins will be private instead of public.
|
147
|
-
|
148
|
-
= New Features
|
149
|
-
|
150
|
-
* The render plugin now has the :layout_opts=>:views plugin option
|
151
|
-
respect the :root app option.
|
152
|
-
|
153
|
-
* RodaPlugins::OPTS and RodaPlugins::EMPTY_ARRAY have been added.
|
154
|
-
These are a frozen empty hash and a frozen empty array, and
|
155
|
-
they are designed for use in plugins so that similar objects are
|
156
|
-
not needed to be defined separately in each plugin.
|
data/doc/release_notes/2.3.0.txt
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
= New Plugins
|
2
|
-
|
3
|
-
* A json_parser plugin has been added, for parsing request bodies in
|
4
|
-
JSON format. This is faster than using a middleware to perform
|
5
|
-
the same task. This plugin supports a :parser option to use a
|
6
|
-
custom JSON parser, an :include_request option to include the
|
7
|
-
request when calling the parser, and a :error_handler option for
|
8
|
-
a proc to call with the request if there is an error when parsing.
|
9
|
-
Example:
|
10
|
-
|
11
|
-
plugin :json_parser,
|
12
|
-
:parser=>JSON.method(:parse),
|
13
|
-
:include_request=>false,
|
14
|
-
:error_handler=>proc{|r| r.halt [400, {}, []]}
|
15
|
-
|
16
|
-
* A path_rewriter plugin has been added, allowing for the rewriting
|
17
|
-
of paths before routing. This allows you to rewrite just the
|
18
|
-
routing path (the default), or PATH_INFO as well as the routing
|
19
|
-
path (if the :path_info option is used). This is useful if you
|
20
|
-
want to internally treat one path exactly the same as another
|
21
|
-
path.
|
22
|
-
|
23
|
-
By default, path rewriting is done on prefixes, so any path that
|
24
|
-
starts with the prefix will be rewritten. You can pass a
|
25
|
-
Regexp when rewriting the path for more complete control.
|
26
|
-
|
27
|
-
Examples:
|
28
|
-
|
29
|
-
plugin :path_rewriter
|
30
|
-
rewrite_path '/a', '/b'
|
31
|
-
# GET /a treated as GET /b
|
32
|
-
# GET /a/c treated as GET /b/c
|
33
|
-
|
34
|
-
rewrite_path /\A\/c\z/, '/d'
|
35
|
-
# GET /c treated as GET /d
|
36
|
-
# GET /c/e no change
|
37
|
-
|
38
|
-
* A precompiled_templates plugin has been added, for precompiling
|
39
|
-
templates before starting the application. This can save a
|
40
|
-
substantial amount of memory if you are using large templates or
|
41
|
-
a large number of small templates in conjunction when using
|
42
|
-
application preloading with a forking webserver. Example:
|
43
|
-
|
44
|
-
plugin :precompile_templates
|
45
|
-
precompile_templates "views/\*\*/*.erb"
|
46
|
-
precompile_templates "views/users/_*.erb", :locals=>[:user]
|
47
|
-
|
48
|
-
* A heartbeat plugin has been added, for easily handling
|
49
|
-
heartbeat/status requests. If a heartbeat/status request comes in,
|
50
|
-
it will get a 200 response with a body of "OK". This is designed
|
51
|
-
for automated systems that check if the application is functioning.
|
52
|
-
The default heartbeat path is /heartbeat, but you can choose a
|
53
|
-
different one using the :path option.
|
54
|
-
|
55
|
-
plugin :heartbeat, :path=>'/heartbeat'
|
56
|
-
|
57
|
-
= Other New Features
|
58
|
-
|
59
|
-
* The json plugin now supports a :serializer option to use a custom
|
60
|
-
serializer. Additionally, it now supports a :include_request
|
61
|
-
option to include the request when calling the serializer.
|
62
|
-
|
63
|
-
* In the render plugin, the render/view methods now support a
|
64
|
-
:cache=>false option to not cache the template. This can be useful
|
65
|
-
for large but rarely used templates, or where a new template object
|
66
|
-
is created for every render/view call.
|
67
|
-
|
68
|
-
* In the render plugin, the render/view methods now support a
|
69
|
-
:cache_key option to force a specific cache key. Manually setting
|
70
|
-
cache keys can result in improved performance, as automatically
|
71
|
-
determining the cache key can be a relatively expensive operation.
|
72
|
-
|
73
|
-
* The render plugin now supports a :engine_opts option, to specify
|
74
|
-
per-template engine options. :engine options should be a hash
|
75
|
-
keyed by render engine strings, with values being hashes of
|
76
|
-
template options.
|
77
|
-
|
78
|
-
* In the mailer plugin, a no_mail! method is now supported when
|
79
|
-
mailing, which will skip the current mail. This makes it easier
|
80
|
-
to delay the decision about actually sending the email till it is
|
81
|
-
time to send the email, which makes it easier to avoid race
|
82
|
-
conditions if you are using a job queue for mailing.
|
83
|
-
|
84
|
-
= Other Improvements
|
85
|
-
|
86
|
-
* Roda avoids rehashing hashes at runtime in some places, for a minor
|
87
|
-
speedup.
|
88
|
-
|
89
|
-
* If the :template_block is given to render/view, default to not
|
90
|
-
caching the template, since it is likely the template block is
|
91
|
-
specific to the request. Allow for the :cache=>true option to be
|
92
|
-
used to force the caching of the template.
|
93
|
-
|
94
|
-
* Roda now returns a 404 response for unmatched GET requests when
|
95
|
-
using the assets and json plugins where r.assets is the last
|
96
|
-
method called in a route block.
|
97
|
-
|
98
|
-
= Backwards Compatibility
|
99
|
-
|
100
|
-
* In the render plugin, the :ext option to the plugin and to the
|
101
|
-
render/view methods is now replaced by the :engine option.
|
102
|
-
Previously, :engine was used by default if :ext was not given. In
|
103
|
-
general, there is no need for two separate options, the engine is
|
104
|
-
used as the extension by Tilt.
|
105
|
-
|
106
|
-
In general, this is a backwards compatible change, except when
|
107
|
-
both :ext and :engine were specified differently as plugin options,
|
108
|
-
and an inline template is used with render or view without either
|
109
|
-
the :ext or :engine options being specified.
|
data/doc/release_notes/2.4.0.txt
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
= New Plugins
|
2
|
-
|
3
|
-
* A websocket plugin has been added, for websocket support using
|
4
|
-
faye-websocket. Here's an example of a simple echo service using
|
5
|
-
websockets:
|
6
|
-
|
7
|
-
plugin :websockets
|
8
|
-
|
9
|
-
route do |r|
|
10
|
-
r.get "echo" do
|
11
|
-
r.websocket do |ws|
|
12
|
-
# Routing block taken for a websocket request to /echo
|
13
|
-
|
14
|
-
# ws is a Faye::WebSocket instance, so you can use the
|
15
|
-
# Faye::WebSocket API
|
16
|
-
ws.on(:message) do |event|
|
17
|
-
ws.send(event.data)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# View rendered if a regular GET request to /echo
|
22
|
-
view "echo"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
* A status_handler plugin has been added, which allows Roda to
|
27
|
-
specially handle arbitrary status codes. Usage is similar to the
|
28
|
-
not_found plugin (which now uses status_handler internally):
|
29
|
-
|
30
|
-
plugin :status_handler
|
31
|
-
|
32
|
-
status_handler 403 do
|
33
|
-
"You are forbidden from seeing that!"
|
34
|
-
end
|
35
|
-
status_handler 404 do
|
36
|
-
"Where did it go?"
|
37
|
-
end
|
38
|
-
|
39
|
-
= Other New Features
|
40
|
-
|
41
|
-
* The assets plugin now supports a :gzip option, which will save
|
42
|
-
gzipped versions when compiling assets. When serving compiled
|
43
|
-
assets, if the request accepts gzip encoding, it will serve
|
44
|
-
the gzipped version. This also plays nicely with nginx's
|
45
|
-
gzip_static support.
|
46
|
-
|
47
|
-
* The assets plugin now supports Google Closure Compiler, Uglifier,
|
48
|
-
and MinJS for minifying javascript. You can now specify which
|
49
|
-
css and js compressors to use via the :css_compressor and
|
50
|
-
:js_compressor options.
|
51
|
-
|
52
|
-
= Backwards Compatibility
|
53
|
-
|
54
|
-
* Roda.plugin now always returns nil. Previously the return value
|
55
|
-
could be non-nil if the plugin used a configure method.
|
data/doc/release_notes/2.5.0.txt
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* The assets plugin now supports a :compiled_asset_host option, which
|
4
|
-
specifies a hostname used to serve compiled assets.
|
5
|
-
|
6
|
-
* The render plugin now supports a :cache_class option, which
|
7
|
-
specificies a class to use for the thread-safe template cache.
|
8
|
-
This can be used to setup LRU caching or caching that checks
|
9
|
-
modify times on the underlying template files.
|
10
|
-
|
11
|
-
* r.multi_run in the multi_run plugin now accepts a block, and calls
|
12
|
-
the block before dispatching to the related rack application. This
|
13
|
-
can be used to modify the environment before dispatching. Example:
|
14
|
-
|
15
|
-
r.multi_run do |prefix|
|
16
|
-
env['authenticated'] = true
|
17
|
-
end
|
18
|
-
|
19
|
-
= Backwards Compatibility
|
20
|
-
|
21
|
-
* The :by_name option to the path plugin now defaults to true in
|
22
|
-
development mode. This should only negatively affect applications
|
23
|
-
that register anonymous classes with the path plugin.
|