roda 3.28.0 → 3.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +40 -0
  3. data/README.rdoc +15 -1
  4. data/doc/conventions.rdoc +17 -8
  5. data/doc/release_notes/3.29.0.txt +15 -0
  6. data/doc/release_notes/3.30.0.txt +14 -0
  7. data/doc/release_notes/3.31.0.txt +11 -0
  8. data/doc/release_notes/3.32.0.txt +42 -0
  9. data/doc/release_notes/3.33.0.txt +8 -0
  10. data/lib/roda.rb +3 -0
  11. data/lib/roda/plugins/_symbol_regexp_matchers.rb +2 -0
  12. data/lib/roda/plugins/assets.rb +26 -5
  13. data/lib/roda/plugins/caching.rb +2 -0
  14. data/lib/roda/plugins/common_logger.rb +1 -1
  15. data/lib/roda/plugins/content_security_policy.rb +2 -0
  16. data/lib/roda/plugins/default_headers.rb +2 -0
  17. data/lib/roda/plugins/exception_page.rb +9 -5
  18. data/lib/roda/plugins/hash_matcher.rb +1 -1
  19. data/lib/roda/plugins/header_matchers.rb +5 -1
  20. data/lib/roda/plugins/indifferent_params.rb +4 -0
  21. data/lib/roda/plugins/partials.rb +33 -6
  22. data/lib/roda/plugins/path.rb +42 -15
  23. data/lib/roda/plugins/placeholder_string_matchers.rb +2 -0
  24. data/lib/roda/plugins/public.rb +25 -17
  25. data/lib/roda/plugins/relative_path.rb +73 -0
  26. data/lib/roda/plugins/render.rb +17 -5
  27. data/lib/roda/plugins/render_each.rb +11 -3
  28. data/lib/roda/plugins/run_append_slash.rb +1 -1
  29. data/lib/roda/plugins/symbol_matchers.rb +2 -2
  30. data/lib/roda/version.rb +1 -1
  31. metadata +13 -214
  32. data/Rakefile +0 -108
  33. data/doc/release_notes/1.0.0.txt +0 -329
  34. data/doc/release_notes/1.1.0.txt +0 -226
  35. data/doc/release_notes/1.2.0.txt +0 -406
  36. data/doc/release_notes/1.3.0.txt +0 -109
  37. data/doc/release_notes/2.0.0.txt +0 -75
  38. data/doc/release_notes/2.1.0.txt +0 -124
  39. data/doc/release_notes/2.10.0.txt +0 -27
  40. data/doc/release_notes/2.11.0.txt +0 -70
  41. data/doc/release_notes/2.12.0.txt +0 -40
  42. data/doc/release_notes/2.13.0.txt +0 -10
  43. data/doc/release_notes/2.14.0.txt +0 -44
  44. data/doc/release_notes/2.15.0.txt +0 -53
  45. data/doc/release_notes/2.16.0.txt +0 -48
  46. data/doc/release_notes/2.17.0.txt +0 -62
  47. data/doc/release_notes/2.18.0.txt +0 -69
  48. data/doc/release_notes/2.19.0.txt +0 -30
  49. data/doc/release_notes/2.2.0.txt +0 -97
  50. data/doc/release_notes/2.20.0.txt +0 -5
  51. data/doc/release_notes/2.21.0.txt +0 -17
  52. data/doc/release_notes/2.22.0.txt +0 -41
  53. data/doc/release_notes/2.23.0.txt +0 -29
  54. data/doc/release_notes/2.24.0.txt +0 -65
  55. data/doc/release_notes/2.25.0.txt +0 -14
  56. data/doc/release_notes/2.26.0.txt +0 -13
  57. data/doc/release_notes/2.27.0.txt +0 -56
  58. data/doc/release_notes/2.28.0.txt +0 -17
  59. data/doc/release_notes/2.29.0.txt +0 -156
  60. data/doc/release_notes/2.3.0.txt +0 -109
  61. data/doc/release_notes/2.4.0.txt +0 -55
  62. data/doc/release_notes/2.5.0.txt +0 -23
  63. data/doc/release_notes/2.5.1.txt +0 -4
  64. data/doc/release_notes/2.6.0.txt +0 -21
  65. data/doc/release_notes/2.7.0.txt +0 -75
  66. data/doc/release_notes/2.8.0.txt +0 -44
  67. data/doc/release_notes/2.9.0.txt +0 -6
  68. data/spec/all.rb +0 -1
  69. data/spec/assets/css/app.scss +0 -1
  70. data/spec/assets/css/no_access.css +0 -1
  71. data/spec/assets/css/raw.css +0 -1
  72. data/spec/assets/js/head/app.js +0 -1
  73. data/spec/composition_spec.rb +0 -31
  74. data/spec/define_roda_method_spec.rb +0 -274
  75. data/spec/env_spec.rb +0 -11
  76. data/spec/freeze_spec.rb +0 -37
  77. data/spec/integration_spec.rb +0 -209
  78. data/spec/matchers_spec.rb +0 -832
  79. data/spec/opts_spec.rb +0 -42
  80. data/spec/plugin/_after_hook_spec.rb +0 -19
  81. data/spec/plugin/all_verbs_spec.rb +0 -29
  82. data/spec/plugin/assets_preloading_spec.rb +0 -98
  83. data/spec/plugin/assets_spec.rb +0 -745
  84. data/spec/plugin/backtracking_array_spec.rb +0 -42
  85. data/spec/plugin/branch_locals_spec.rb +0 -106
  86. data/spec/plugin/caching_spec.rb +0 -337
  87. data/spec/plugin/chunked_spec.rb +0 -201
  88. data/spec/plugin/class_level_routing_spec.rb +0 -164
  89. data/spec/plugin/class_matchers_spec.rb +0 -40
  90. data/spec/plugin/common_logger_spec.rb +0 -85
  91. data/spec/plugin/content_for_spec.rb +0 -162
  92. data/spec/plugin/content_security_policy_spec.rb +0 -175
  93. data/spec/plugin/cookies_spec.rb +0 -51
  94. data/spec/plugin/csrf_spec.rb +0 -111
  95. data/spec/plugin/default_headers_spec.rb +0 -82
  96. data/spec/plugin/default_status_spec.rb +0 -95
  97. data/spec/plugin/delay_build_spec.rb +0 -23
  98. data/spec/plugin/delegate_spec.rb +0 -23
  99. data/spec/plugin/delete_empty_headers_spec.rb +0 -27
  100. data/spec/plugin/direct_call_spec.rb +0 -28
  101. data/spec/plugin/disallow_file_uploads_spec.rb +0 -25
  102. data/spec/plugin/drop_body_spec.rb +0 -24
  103. data/spec/plugin/early_hints_spec.rb +0 -19
  104. data/spec/plugin/empty_root_spec.rb +0 -14
  105. data/spec/plugin/environments_spec.rb +0 -42
  106. data/spec/plugin/error_email_spec.rb +0 -97
  107. data/spec/plugin/error_handler_spec.rb +0 -216
  108. data/spec/plugin/error_mail_spec.rb +0 -93
  109. data/spec/plugin/exception_page_spec.rb +0 -168
  110. data/spec/plugin/flash_spec.rb +0 -121
  111. data/spec/plugin/h_spec.rb +0 -11
  112. data/spec/plugin/halt_spec.rb +0 -119
  113. data/spec/plugin/hash_matcher_spec.rb +0 -27
  114. data/spec/plugin/hash_routes_spec.rb +0 -535
  115. data/spec/plugin/head_spec.rb +0 -52
  116. data/spec/plugin/header_matchers_spec.rb +0 -98
  117. data/spec/plugin/heartbeat_spec.rb +0 -74
  118. data/spec/plugin/hooks_spec.rb +0 -152
  119. data/spec/plugin/indifferent_params_spec.rb +0 -14
  120. data/spec/plugin/json_parser_spec.rb +0 -141
  121. data/spec/plugin/json_spec.rb +0 -83
  122. data/spec/plugin/mail_processor_spec.rb +0 -451
  123. data/spec/plugin/mailer_spec.rb +0 -282
  124. data/spec/plugin/match_affix_spec.rb +0 -43
  125. data/spec/plugin/match_hook_spec.rb +0 -79
  126. data/spec/plugin/middleware_spec.rb +0 -237
  127. data/spec/plugin/middleware_stack_spec.rb +0 -81
  128. data/spec/plugin/module_include_spec.rb +0 -48
  129. data/spec/plugin/multi_route_spec.rb +0 -268
  130. data/spec/plugin/multi_run_spec.rb +0 -87
  131. data/spec/plugin/multi_view_spec.rb +0 -50
  132. data/spec/plugin/multibyte_string_matcher_spec.rb +0 -44
  133. data/spec/plugin/named_templates_spec.rb +0 -96
  134. data/spec/plugin/not_allowed_spec.rb +0 -69
  135. data/spec/plugin/not_found_spec.rb +0 -128
  136. data/spec/plugin/optimized_string_matchers_spec.rb +0 -43
  137. data/spec/plugin/padrino_render_spec.rb +0 -34
  138. data/spec/plugin/param_matchers_spec.rb +0 -69
  139. data/spec/plugin/params_capturing_spec.rb +0 -33
  140. data/spec/plugin/partials_spec.rb +0 -43
  141. data/spec/plugin/pass_spec.rb +0 -29
  142. data/spec/plugin/path_matchers_spec.rb +0 -42
  143. data/spec/plugin/path_rewriter_spec.rb +0 -45
  144. data/spec/plugin/path_spec.rb +0 -222
  145. data/spec/plugin/placeholder_string_matchers_spec.rb +0 -126
  146. data/spec/plugin/precompile_templates_spec.rb +0 -61
  147. data/spec/plugin/public_spec.rb +0 -85
  148. data/spec/plugin/render_each_spec.rb +0 -82
  149. data/spec/plugin/render_locals_spec.rb +0 -114
  150. data/spec/plugin/render_spec.rb +0 -912
  151. data/spec/plugin/request_aref_spec.rb +0 -51
  152. data/spec/plugin/request_headers_spec.rb +0 -39
  153. data/spec/plugin/response_request_spec.rb +0 -43
  154. data/spec/plugin/route_block_args_spec.rb +0 -86
  155. data/spec/plugin/route_csrf_spec.rb +0 -305
  156. data/spec/plugin/run_append_slash_spec.rb +0 -77
  157. data/spec/plugin/run_handler_spec.rb +0 -53
  158. data/spec/plugin/sessions_spec.rb +0 -452
  159. data/spec/plugin/shared_vars_spec.rb +0 -45
  160. data/spec/plugin/sinatra_helpers_spec.rb +0 -537
  161. data/spec/plugin/slash_path_empty_spec.rb +0 -22
  162. data/spec/plugin/static_routing_spec.rb +0 -192
  163. data/spec/plugin/static_spec.rb +0 -30
  164. data/spec/plugin/status_303_spec.rb +0 -28
  165. data/spec/plugin/status_handler_spec.rb +0 -158
  166. data/spec/plugin/streaming_spec.rb +0 -246
  167. data/spec/plugin/strip_path_prefix_spec.rb +0 -24
  168. data/spec/plugin/symbol_matchers_spec.rb +0 -51
  169. data/spec/plugin/symbol_status_spec.rb +0 -25
  170. data/spec/plugin/symbol_views_spec.rb +0 -32
  171. data/spec/plugin/timestamp_public_spec.rb +0 -85
  172. data/spec/plugin/type_routing_spec.rb +0 -348
  173. data/spec/plugin/typecast_params_spec.rb +0 -1370
  174. data/spec/plugin/unescape_path_spec.rb +0 -22
  175. data/spec/plugin/view_options_spec.rb +0 -170
  176. data/spec/plugin_spec.rb +0 -71
  177. data/spec/redirect_spec.rb +0 -41
  178. data/spec/request_spec.rb +0 -97
  179. data/spec/response_spec.rb +0 -199
  180. data/spec/route_spec.rb +0 -39
  181. data/spec/session_middleware_spec.rb +0 -129
  182. data/spec/session_spec.rb +0 -37
  183. data/spec/spec_helper.rb +0 -137
  184. data/spec/version_spec.rb +0 -14
  185. data/spec/views/_test.erb +0 -1
  186. data/spec/views/a.erb +0 -1
  187. data/spec/views/a.rdoc +0 -2
  188. data/spec/views/about.erb +0 -1
  189. data/spec/views/about.str +0 -1
  190. data/spec/views/about/_test.css.gz +0 -0
  191. data/spec/views/about/_test.erb +0 -1
  192. data/spec/views/about/_test.erb.gz +0 -0
  193. data/spec/views/about/comp_test.erb +0 -1
  194. data/spec/views/b.erb +0 -1
  195. data/spec/views/c.erb +0 -1
  196. data/spec/views/comp_layout.erb +0 -1
  197. data/spec/views/comp_test.erb +0 -1
  198. data/spec/views/content-yield.erb +0 -1
  199. data/spec/views/each.str +0 -1
  200. data/spec/views/home.erb +0 -2
  201. data/spec/views/home.str +0 -2
  202. data/spec/views/iv.erb +0 -1
  203. data/spec/views/layout-alternative.erb +0 -2
  204. data/spec/views/layout-yield.erb +0 -3
  205. data/spec/views/layout.erb +0 -2
  206. data/spec/views/layout.str +0 -2
  207. data/spec/views/multiple-layout.erb +0 -1
  208. data/spec/views/multiple.erb +0 -1
@@ -1,41 +0,0 @@
1
- = New Features
2
-
3
- * An :unsupported_block_result => :raise option is now supported
4
- for Roda applications. This will raise a RodaError if an
5
- unsupported value is returned from a match block or the
6
- route block. This can make it easier to discover potential
7
- problems in the routing tree. This option may become the
8
- default behavior in Roda 3.
9
-
10
- * An :unsupported_matcher => :raise option is now supported for
11
- Roda applications. This will raise a RodaError if you use an
12
- unsupported value as a matcher. This can make it easier to
13
- discover potential problems in the routing tree. This option
14
- may become the default behavior in Roda 3.
15
-
16
- * A :verbatim_string_matcher option is now supported for Roda
17
- applications. This will make all string matchers only match
18
- the path verbatim, disallowing the use of a colon for
19
- placeholders in the string. It's recommended that users
20
- switch to using separate symbol arguments for placeholders.
21
-
22
- If you enable this option, you need to change code such as:
23
-
24
- r.is "foo/:bar" do |bar|
25
- end
26
-
27
- to:
28
-
29
- r.is "foo", :bar do |bar|
30
- end
31
-
32
- If you are looking to convert an existing routing tree
33
- from using placeholders in strings to separate symbol
34
- arguments, you can scan your routing tree for potential
35
- usage of placeholders in strings:
36
-
37
- grep ' r\..*['\''"].*:.*['\''"]' app.rb
38
-
39
- This option may become the default behavior in Roda 3, with
40
- a plugin added to support the current default behavior of
41
- allowing placeholders in string matchers.
@@ -1,29 +0,0 @@
1
- = New Features
2
-
3
- * An :explicit_cache option has been added to the render plugin.
4
- This is similar to the :cache=>false option, but instead of
5
- disabling caching completely, this disables caching by default but
6
- allows for explicit caching of templates by providing the :cache
7
- option to view/render.
8
-
9
- In development mode, Roda now defaults to :explicit_cache=>true
10
- instead of :cache=>false.
11
-
12
- * An :inherit_cache option has been added to the render plugin,
13
- making subclasses of that class start with a dup of the template
14
- cache, instead of starting with an empty template cache. This can
15
- result in less memory used.
16
-
17
- * Roda#error_email in the error_email plugin now accepts non-Exception
18
- arguments (such as strings). This can be useful in conditions that
19
- are errors you may want to notify about, where an exception hasn't
20
- been raised.
21
-
22
- * Roda#error_email_content has been added to the error_email plugin.
23
- This can be used to create the email message, which can be delivered
24
- via another mechanism, and may make testing easier.
25
-
26
- = Other Improvements
27
-
28
- * Roda.freeze in the static_routing plugin now returns self, fixing
29
- code such as Roda.freeze.app.
@@ -1,65 +0,0 @@
1
- = New Features
2
-
3
- * The middleware plugin now accepts a block that can be used to
4
- implement configurable middleware. This allows you to load the
5
- Roda application as middleware in another application, and provide
6
- options/block that are passed to the block you passed when loading
7
- the middleware plugin. Example:
8
-
9
- class Mid < Roda
10
- plugin :middleware do |middleware, *args, &block|
11
- middleware.opts[:middleware_args] = args
12
- block.call(middleware)
13
- end
14
- end
15
-
16
- class App < Roda
17
- use Mid, :foo, :bar do |middleware|
18
- middleware.opts[:middleware_args] << :baz
19
- end
20
- end
21
-
22
- Note that when passing a block when loading the middleware plugin,
23
- using the middleware in another rack application will actually
24
- load a subclass of the middleware (Mid in the example above).
25
- This allows you to use the Roda middleware multiple times in the
26
- same process with different configurations.
27
-
28
- * The cookies plugin now accepts options that are used as the default
29
- options when setting and deleting cookies:
30
-
31
- plugin :cookies, :path => '/foo', :domain => 'example.com'
32
-
33
- * A strip_path_prefix plugin has been added, which can be used to
34
- strip prefixes from internal paths. Internally Sequel stores
35
- most paths as absolute paths, but there are cases where this
36
- doesn't work well, such as symlink changes and chroot. This
37
- plugin supports those scenarios.
38
-
39
- * A disallow_file_uploads plugin has been added, which raises
40
- an exception if the user attempts a multipart file upload.
41
- More exactly, it makes the application raise an exception if
42
- attempting to parse a request body when the user has submitted
43
- a multipart file upload. This is useful if you don't need to
44
- support file uploads in your application, or cases where no
45
- paths are writable by the application (due to chroot or system call
46
- filtering).
47
-
48
- * The :freeze_middleware option has been added, which freezes all
49
- middleware instances when building the rack application. This
50
- can help find thread safety issues in middleware.
51
-
52
- = Other Improvements
53
-
54
- * The h plugin is now about 6x faster on ruby 2.3+ due to the use
55
- of cgi/escape.
56
-
57
- * The static_routing plugin now works with the hooks plugin if the
58
- hooks plugin is loaded first.
59
-
60
- * The render plugin's render cache is no longer cleared when loading
61
- the plugin multiple times.
62
-
63
- = Backwards Compatibility
64
-
65
- * The h plugin now escapes ' as &#39; instead of &#x27;.
@@ -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.
@@ -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.