roda 3.83.0 → 3.84.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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/lib/roda/plugins/hsts.rb +35 -0
  3. data/lib/roda/response.rb +1 -1
  4. data/lib/roda/version.rb +1 -1
  5. metadata +4 -179
  6. data/CHANGELOG +0 -691
  7. data/README.rdoc +0 -1136
  8. data/doc/conventions.rdoc +0 -177
  9. data/doc/release_notes/3.0.0.txt +0 -84
  10. data/doc/release_notes/3.1.0.txt +0 -24
  11. data/doc/release_notes/3.10.0.txt +0 -132
  12. data/doc/release_notes/3.11.0.txt +0 -54
  13. data/doc/release_notes/3.12.0.txt +0 -19
  14. data/doc/release_notes/3.13.0.txt +0 -38
  15. data/doc/release_notes/3.14.0.txt +0 -36
  16. data/doc/release_notes/3.14.1.txt +0 -43
  17. data/doc/release_notes/3.15.0.txt +0 -21
  18. data/doc/release_notes/3.16.0.txt +0 -52
  19. data/doc/release_notes/3.17.0.txt +0 -62
  20. data/doc/release_notes/3.18.0.txt +0 -170
  21. data/doc/release_notes/3.19.0.txt +0 -229
  22. data/doc/release_notes/3.2.0.txt +0 -22
  23. data/doc/release_notes/3.20.0.txt +0 -7
  24. data/doc/release_notes/3.21.0.txt +0 -5
  25. data/doc/release_notes/3.22.0.txt +0 -24
  26. data/doc/release_notes/3.23.0.txt +0 -28
  27. data/doc/release_notes/3.24.0.txt +0 -14
  28. data/doc/release_notes/3.25.0.txt +0 -12
  29. data/doc/release_notes/3.26.0.txt +0 -15
  30. data/doc/release_notes/3.27.0.txt +0 -15
  31. data/doc/release_notes/3.28.0.txt +0 -13
  32. data/doc/release_notes/3.29.0.txt +0 -15
  33. data/doc/release_notes/3.3.0.txt +0 -291
  34. data/doc/release_notes/3.30.0.txt +0 -14
  35. data/doc/release_notes/3.31.0.txt +0 -11
  36. data/doc/release_notes/3.32.0.txt +0 -42
  37. data/doc/release_notes/3.33.0.txt +0 -8
  38. data/doc/release_notes/3.34.0.txt +0 -17
  39. data/doc/release_notes/3.35.0.txt +0 -12
  40. data/doc/release_notes/3.36.0.txt +0 -17
  41. data/doc/release_notes/3.37.0.txt +0 -42
  42. data/doc/release_notes/3.38.0.txt +0 -5
  43. data/doc/release_notes/3.39.0.txt +0 -16
  44. data/doc/release_notes/3.4.0.txt +0 -24
  45. data/doc/release_notes/3.40.0.txt +0 -24
  46. data/doc/release_notes/3.41.0.txt +0 -9
  47. data/doc/release_notes/3.42.0.txt +0 -21
  48. data/doc/release_notes/3.43.0.txt +0 -34
  49. data/doc/release_notes/3.44.0.txt +0 -23
  50. data/doc/release_notes/3.45.0.txt +0 -22
  51. data/doc/release_notes/3.46.0.txt +0 -19
  52. data/doc/release_notes/3.47.0.txt +0 -13
  53. data/doc/release_notes/3.48.0.txt +0 -10
  54. data/doc/release_notes/3.49.0.txt +0 -18
  55. data/doc/release_notes/3.5.0.txt +0 -31
  56. data/doc/release_notes/3.50.0.txt +0 -21
  57. data/doc/release_notes/3.51.0.txt +0 -20
  58. data/doc/release_notes/3.52.0.txt +0 -20
  59. data/doc/release_notes/3.53.0.txt +0 -14
  60. data/doc/release_notes/3.54.0.txt +0 -48
  61. data/doc/release_notes/3.55.0.txt +0 -12
  62. data/doc/release_notes/3.56.0.txt +0 -33
  63. data/doc/release_notes/3.57.0.txt +0 -34
  64. data/doc/release_notes/3.58.0.txt +0 -16
  65. data/doc/release_notes/3.59.0.txt +0 -17
  66. data/doc/release_notes/3.6.0.txt +0 -21
  67. data/doc/release_notes/3.60.0.txt +0 -56
  68. data/doc/release_notes/3.61.0.txt +0 -24
  69. data/doc/release_notes/3.62.0.txt +0 -41
  70. data/doc/release_notes/3.63.0.txt +0 -36
  71. data/doc/release_notes/3.64.0.txt +0 -26
  72. data/doc/release_notes/3.65.0.txt +0 -12
  73. data/doc/release_notes/3.66.0.txt +0 -23
  74. data/doc/release_notes/3.67.0.txt +0 -25
  75. data/doc/release_notes/3.68.0.txt +0 -21
  76. data/doc/release_notes/3.69.0.txt +0 -33
  77. data/doc/release_notes/3.7.0.txt +0 -123
  78. data/doc/release_notes/3.70.0.txt +0 -19
  79. data/doc/release_notes/3.71.0.txt +0 -33
  80. data/doc/release_notes/3.72.0.txt +0 -48
  81. data/doc/release_notes/3.73.0.txt +0 -33
  82. data/doc/release_notes/3.74.0.txt +0 -28
  83. data/doc/release_notes/3.75.0.txt +0 -19
  84. data/doc/release_notes/3.76.0.txt +0 -18
  85. data/doc/release_notes/3.77.0.txt +0 -8
  86. data/doc/release_notes/3.78.0.txt +0 -99
  87. data/doc/release_notes/3.79.0.txt +0 -148
  88. data/doc/release_notes/3.8.0.txt +0 -27
  89. data/doc/release_notes/3.80.0.txt +0 -31
  90. data/doc/release_notes/3.81.0.txt +0 -24
  91. data/doc/release_notes/3.82.0.txt +0 -43
  92. data/doc/release_notes/3.83.0.txt +0 -6
  93. data/doc/release_notes/3.9.0.txt +0 -67
@@ -1,24 +0,0 @@
1
- = New Features
2
-
3
- * The hmac_paths plugin now supports :until and :seconds options for
4
- hmac_path, to create a path that is only valid for a specific amount of
5
- time. :until sets a specific time that the path will be valid until,
6
- and :seconds makes the path only valid for the given number of seconds.
7
-
8
- hmac_path('/widget/1', until: Time.utc(2100))
9
- # => "/dc8b6e56e4cbe7815df7880d42f0e02956b2e4c49881b6060ceb0e49745a540d/t/4102444800/widget/1"
10
-
11
- Requests for the path after the given time will not be matched by
12
- r.hmac_path.
13
-
14
- = Other Improvements
15
-
16
- * The early_hints plugin now correctly follows the Rack 3 SPEC when
17
- using Rack 3. This was not caught previously because Rack only
18
- added official support for early_hints in the last month.
19
-
20
- * Ruby 3.4 backtraces are now parsed correctly in the exception_page
21
- plugin.
22
-
23
- * Some plugins that accept a block no longer issue an unused block
24
- warning on Ruby 3.4.
@@ -1,43 +0,0 @@
1
- = New Features
2
-
3
- * A :zstd option has been added to the public and multi_public
4
- plugins to support serving zstd-compressed files with a .zst
5
- extension. This option is similar to the existing :gzip and
6
- :brotli plugin options. Chrome started supporting zstd encoding
7
- in March.
8
-
9
- * An :encodings option has been added to the public and multi_public
10
- plugins, for more control over how encodings are handled. This
11
- allows for changing the order in which encodings are attempted, the
12
- use of custom encodings, and the use of different file extensions
13
- for encodings. Example:
14
-
15
- plugin :public, encodings: {'zstd'=>'.zst', 'deflate'=>'.deflate'}
16
-
17
- If the :encodings option is not provided, the :zstd, :brotli, and
18
- :gzip options are used to build an equivalent :encodings option.
19
-
20
- = Other Improvements
21
-
22
- * The capture_erb plugin now integrates better when using
23
- erubi/capture_block for <%= method do %> support in ERB templates,
24
- using the native capture method provided by the buffer object.
25
-
26
- * Encoding handling has been more optimized in the public plugin.
27
- Regexps for the encodings are precomputed, avoiding a regexp
28
- allocation per request per encoding attempted. On Ruby 2.4+
29
- Regexp#match? is used for better performance. If the
30
- Accept-Encoding header is not present, no encoding matching
31
- is attemped.
32
-
33
- = Backwards Compatibility
34
-
35
- * The private public_serve_compressed request method in the public
36
- plugin now assumes it is called after the encoding is already
37
- valid. If you are calling this method in your own code, you now
38
- need to perform checks to make sure the client can accept the
39
- encoding before calling this method.
40
-
41
- * The :public_gzip and :public_brotli application options are no
42
- longer set by the public plugin. The :public_encodings option
43
- is now set.
@@ -1,6 +0,0 @@
1
- = New Features
2
-
3
- * An assume_ssl plugin has been added. This plugin is designed for
4
- cases where the application is being fronted by an SSL-terminating
5
- reverse proxy that does not set the X-Forwarded-Proto or similar
6
- header to indicate it is forwarding an SSL request.
@@ -1,67 +0,0 @@
1
- = New Features
2
-
3
- * A route_csrf plugin has been added. This plugin allows for more
4
- control over CSRF protection, since the user can choose where in
5
- the routing tree to enforce the protection. Additionally, the
6
- route_csrf plugin offers better security than the CSRF protection
7
- used by the csrf plugin (which uses the rack_csrf library).
8
-
9
- The route_csrf plugin defaults to allowing only CSRF tokens
10
- specific to a given request method and request path, and not
11
- allowing generic CSRF tokens (though it does offer optional support
12
- for such tokens). Both request-specific and generic CSRF tokens
13
- are designed to never leak the CSRF secret key, making it more
14
- difficult to forge valid CSRF tokens. Additionally, the plugin
15
- offers optional support for accepting rack_csrf tokens, which
16
- should only be enabled during a short transition period.
17
-
18
- Some differences between the route_csrf plugin and the older
19
- csrf plugin:
20
-
21
- * route_csrf supports and by default only allows CSRF tokens
22
- specific to request method and request path, as mentioned
23
- above. You can use the require_request_specific_tokens: false
24
- option to allow generic CSRF tokens.
25
-
26
- * route_csrf does not check the HTTP header by default, it
27
- only checks the header if the :check_header option is set.
28
- The :check_header option can be set to true to check both
29
- the parameter and the header, or set to :only to only check
30
- the header.
31
-
32
- * route_csrf raises by default for invalid CSRF tokens. rack_csrf
33
- returns an empty 403 response in that case. You can use the
34
- error_handler plugin to handle the
35
- Roda::RodaPlugins::RouteCsrf::InvalidToken exceptions, or you
36
- can use the csrf_failure: :empty_403 option if you would like
37
- the csrf plugin default behavior. The plugin also accepts a
38
- block for configurable failure behavior.
39
-
40
- * route_csrf does not use a middleware, as it is designed to give
41
- more control. In order to enforce the CSRF protection, you need
42
- to call check_csrf! in your routing tree at the appropriate
43
- place. If you are not sure where to add it, add it to the top
44
- of the routing tree, after the public or assets routes if you
45
- are using those plugins:
46
-
47
- route do
48
- r.public
49
- r.assets
50
- check_csrf!
51
-
52
- # ...
53
- end
54
-
55
- The check_csrf! method accepts an options hash, which can be used
56
- to override the plugin options on a per-call basis.
57
-
58
- * The csrf_token/csrf_tag methods take an optional path and method
59
- arguments. If a path is given, the method defaults to POST, and
60
- the resulting CSRF token can only be used to submit forms for the
61
- path and method. If a path is not given, the resulting CSRF token
62
- will be generic, but it will only work if the plugin has been
63
- configured to allow generic CSRF tokens.
64
-
65
- * A csrf_path method is available for easily taking a form action
66
- string and returning an appropriate path to pass to the csrf_token
67
- or csrf_tag methods.