actionpack 6.1.7.5 → 7.0.8.1
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.
Potentially problematic release.
This version of actionpack might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +323 -399
- data/MIT-LICENSE +1 -0
- data/README.rdoc +4 -5
- data/lib/abstract_controller/asset_paths.rb +1 -1
- data/lib/abstract_controller/base.rb +13 -26
- data/lib/abstract_controller/caching/fragments.rb +2 -2
- data/lib/abstract_controller/caching.rb +1 -1
- data/lib/abstract_controller/callbacks.rb +21 -7
- data/lib/abstract_controller/collector.rb +2 -2
- data/lib/abstract_controller/error.rb +1 -1
- data/lib/abstract_controller/helpers.rb +17 -12
- data/lib/abstract_controller/logger.rb +1 -1
- data/lib/abstract_controller/railties/routes_helpers.rb +2 -0
- data/lib/abstract_controller/rendering.rb +9 -11
- data/lib/abstract_controller/translation.rb +27 -4
- data/lib/abstract_controller/url_for.rb +4 -6
- data/lib/action_controller/api.rb +7 -7
- data/lib/action_controller/base.rb +5 -4
- data/lib/action_controller/form_builder.rb +2 -2
- data/lib/action_controller/log_subscriber.rb +4 -3
- data/lib/action_controller/metal/basic_implicit_render.rb +3 -1
- data/lib/action_controller/metal/conditional_get.rb +137 -102
- data/lib/action_controller/metal/content_security_policy.rb +36 -2
- data/lib/action_controller/metal/cookies.rb +1 -1
- data/lib/action_controller/metal/data_streaming.rb +23 -31
- data/lib/action_controller/metal/etag_with_flash.rb +1 -1
- data/lib/action_controller/metal/exceptions.rb +19 -30
- data/lib/action_controller/metal/flash.rb +6 -2
- data/lib/action_controller/metal/head.rb +1 -1
- data/lib/action_controller/metal/helpers.rb +2 -2
- data/lib/action_controller/metal/http_authentication.rb +66 -39
- data/lib/action_controller/metal/instrumentation.rb +57 -52
- data/lib/action_controller/metal/live.rb +43 -2
- data/lib/action_controller/metal/mime_responds.rb +3 -3
- data/lib/action_controller/metal/params_wrapper.rb +20 -11
- data/lib/action_controller/metal/permissions_policy.rb +19 -28
- data/lib/action_controller/metal/redirecting.rb +95 -22
- data/lib/action_controller/metal/renderers.rb +12 -13
- data/lib/action_controller/metal/rendering.rb +121 -9
- data/lib/action_controller/metal/request_forgery_protection.rb +83 -32
- data/lib/action_controller/metal/rescue.rb +5 -4
- data/lib/action_controller/metal/streaming.rb +7 -9
- data/lib/action_controller/metal/strong_parameters.rb +138 -115
- data/lib/action_controller/metal/testing.rb +9 -2
- data/lib/action_controller/metal/url_for.rb +3 -5
- data/lib/action_controller/metal.rb +10 -13
- data/lib/action_controller/railtie.rb +50 -6
- data/lib/action_controller/renderer.rb +1 -20
- data/lib/action_controller/test_case.rb +28 -7
- data/lib/action_controller.rb +2 -5
- data/lib/action_dispatch/http/cache.rb +20 -13
- data/lib/action_dispatch/http/content_security_policy.rb +113 -36
- data/lib/action_dispatch/http/filter_parameters.rb +4 -19
- data/lib/action_dispatch/http/headers.rb +1 -1
- data/lib/action_dispatch/http/mime_negotiation.rb +15 -5
- data/lib/action_dispatch/http/mime_type.rb +9 -11
- data/lib/action_dispatch/http/parameters.rb +5 -5
- data/lib/action_dispatch/http/permissions_policy.rb +17 -1
- data/lib/action_dispatch/http/request.rb +27 -37
- data/lib/action_dispatch/http/response.rb +3 -20
- data/lib/action_dispatch/http/upload.rb +13 -2
- data/lib/action_dispatch/http/url.rb +11 -19
- data/lib/action_dispatch/journey/gtg/builder.rb +11 -12
- data/lib/action_dispatch/journey/gtg/simulator.rb +10 -4
- data/lib/action_dispatch/journey/gtg/transition_table.rb +77 -21
- data/lib/action_dispatch/journey/nodes/node.rb +70 -5
- data/lib/action_dispatch/journey/path/pattern.rb +22 -13
- data/lib/action_dispatch/journey/route.rb +6 -13
- data/lib/action_dispatch/journey/router/utils.rb +2 -2
- data/lib/action_dispatch/journey/router.rb +1 -1
- data/lib/action_dispatch/journey/routes.rb +3 -3
- data/lib/action_dispatch/journey/visualizer/fsm.js +49 -24
- data/lib/action_dispatch/journey/visualizer/index.html.erb +1 -1
- data/lib/action_dispatch/middleware/actionable_exceptions.rb +0 -1
- data/lib/action_dispatch/middleware/cookies.rb +20 -13
- data/lib/action_dispatch/middleware/debug_exceptions.rb +6 -4
- data/lib/action_dispatch/middleware/debug_locks.rb +3 -3
- data/lib/action_dispatch/middleware/exception_wrapper.rb +4 -0
- data/lib/action_dispatch/middleware/executor.rb +3 -0
- data/lib/action_dispatch/middleware/flash.rb +17 -18
- data/lib/action_dispatch/middleware/host_authorization.rb +13 -17
- data/lib/action_dispatch/middleware/remote_ip.rb +20 -8
- data/lib/action_dispatch/middleware/request_id.rb +3 -3
- data/lib/action_dispatch/middleware/server_timing.rb +76 -0
- data/lib/action_dispatch/middleware/session/abstract_store.rb +1 -1
- data/lib/action_dispatch/middleware/session/cookie_store.rb +9 -9
- data/lib/action_dispatch/middleware/show_exceptions.rb +17 -16
- data/lib/action_dispatch/middleware/stack.rb +27 -9
- data/lib/action_dispatch/middleware/static.rb +5 -9
- data/lib/action_dispatch/middleware/templates/rescues/_message_and_suggestions.html.erb +1 -1
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +4 -11
- data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +2 -2
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.html.erb +10 -5
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.text.erb +7 -3
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +4 -4
- data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +28 -18
- data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.html.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +3 -3
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +22 -22
- data/lib/action_dispatch/railtie.rb +8 -2
- data/lib/action_dispatch/request/session.rb +43 -13
- data/lib/action_dispatch/routing/inspector.rb +1 -1
- data/lib/action_dispatch/routing/mapper.rb +82 -83
- data/lib/action_dispatch/routing/redirection.rb +5 -2
- data/lib/action_dispatch/routing/route_set.rb +17 -7
- data/lib/action_dispatch/routing/routes_proxy.rb +1 -1
- data/lib/action_dispatch/routing/url_for.rb +24 -25
- data/lib/action_dispatch/routing.rb +5 -6
- data/lib/action_dispatch/system_test_case.rb +5 -5
- data/lib/action_dispatch/system_testing/browser.rb +3 -13
- data/lib/action_dispatch/system_testing/driver.rb +34 -10
- data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +11 -7
- data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +0 -8
- data/lib/action_dispatch/testing/assertions/response.rb +1 -1
- data/lib/action_dispatch/testing/assertions/routing.rb +3 -2
- data/lib/action_dispatch/testing/assertions.rb +2 -5
- data/lib/action_dispatch/testing/integration.rb +6 -8
- data/lib/action_dispatch/testing/test_process.rb +3 -29
- data/lib/action_dispatch/testing/test_response.rb +20 -2
- data/lib/action_dispatch.rb +1 -0
- data/lib/action_pack/gem_version.rb +5 -5
- data/lib/action_pack/version.rb +1 -1
- metadata +16 -15
data/CHANGELOG.md
CHANGED
@@ -1,673 +1,597 @@
|
|
1
|
-
## Rails
|
1
|
+
## Rails 7.0.8.1 (February 21, 2024) ##
|
2
2
|
|
3
|
-
*
|
4
|
-
|
5
|
-
|
6
|
-
## Rails 6.1.7.4 (June 26, 2023) ##
|
7
|
-
|
8
|
-
* Raise an exception if illegal characters are provide to redirect_to
|
9
|
-
[CVE-2023-28362]
|
3
|
+
* Fix possible XSS vulnerability with the `translate` method in controllers
|
10
4
|
|
11
|
-
|
12
|
-
|
13
|
-
## Rails 6.1.7.3 (March 13, 2023) ##
|
5
|
+
CVE-2024-26143
|
14
6
|
|
15
|
-
|
7
|
+
## Rails 7.0.8 (September 09, 2023) ##
|
16
8
|
|
9
|
+
* Fix `HostAuthorization` potentially displaying the value of the
|
10
|
+
X_FORWARDED_HOST header when the HTTP_HOST header is being blocked.
|
17
11
|
|
18
|
-
|
12
|
+
*Hartley McGuire*, *Daniel Schlosser*
|
19
13
|
|
20
|
-
* Fix `domain: :all` for two letter TLD
|
21
14
|
|
22
|
-
|
23
|
-
release when using `domain: :all` with a two letter but single level top
|
24
|
-
level domain domain (like `.ca`, rather than `.co.uk`).
|
25
|
-
|
26
|
-
|
27
|
-
## Rails 6.1.7.1 (January 17, 2023) ##
|
28
|
-
|
29
|
-
* Avoid regex backtracking on If-None-Match header
|
30
|
-
|
31
|
-
[CVE-2023-22795]
|
32
|
-
|
33
|
-
* Use string#split instead of regex for domain parts
|
34
|
-
|
35
|
-
[CVE-2023-22792]
|
36
|
-
|
37
|
-
|
38
|
-
## Rails 6.1.7 (September 09, 2022) ##
|
15
|
+
## Rails 7.0.7.2 (August 22, 2023) ##
|
39
16
|
|
40
17
|
* No changes.
|
41
18
|
|
42
19
|
|
43
|
-
## Rails
|
20
|
+
## Rails 7.0.7.1 (August 22, 2023) ##
|
44
21
|
|
45
22
|
* No changes.
|
46
23
|
|
47
24
|
|
48
|
-
## Rails
|
25
|
+
## Rails 7.0.7 (August 09, 2023) ##
|
49
26
|
|
50
27
|
* No changes.
|
51
28
|
|
52
29
|
|
53
|
-
## Rails
|
30
|
+
## Rails 7.0.6 (June 29, 2023) ##
|
54
31
|
|
55
|
-
*
|
32
|
+
* No changes.
|
56
33
|
|
57
|
-
*Tim Wade*
|
58
34
|
|
59
|
-
## Rails
|
35
|
+
## Rails 7.0.5.1 (June 26, 2023) ##
|
60
36
|
|
61
|
-
*
|
62
|
-
|
63
|
-
Directives such as `self`, `unsafe-eval` and few others were not
|
64
|
-
single quoted when the directive was the result of calling a lambda
|
65
|
-
returning an array.
|
37
|
+
* Raise an exception if illegal characters are provide to redirect_to
|
38
|
+
[CVE-2023-28362]
|
66
39
|
|
67
|
-
|
68
|
-
content_security_policy do |policy|
|
69
|
-
policy.frame_ancestors lambda { [:self, "https://example.com"] }
|
70
|
-
end
|
71
|
-
```
|
40
|
+
*Zack Deveau*
|
72
41
|
|
73
|
-
|
42
|
+
## Rails 7.0.5 (May 24, 2023) ##
|
74
43
|
|
75
|
-
|
44
|
+
* Do not return CSP headers for 304 Not Modified responses.
|
76
45
|
|
77
|
-
*
|
78
|
-
when `config.consider_all_requests_local` is set to true.
|
46
|
+
*Tobias Kraze*
|
79
47
|
|
80
|
-
|
48
|
+
* Fix `EtagWithFlash` when there is no `Flash` middleware available.
|
81
49
|
|
82
|
-
|
50
|
+
*fatkodima*
|
83
51
|
|
84
|
-
|
52
|
+
* Fix content-type header with `send_stream`.
|
85
53
|
|
86
|
-
*
|
54
|
+
*Elliot Crosby-McCullough*
|
87
55
|
|
88
|
-
|
56
|
+
* Address Selenium `:capabilities` deprecation warning.
|
89
57
|
|
90
|
-
*
|
58
|
+
*Ron Shinall*
|
91
59
|
|
92
|
-
*
|
60
|
+
* Fix cookie domain for domain: all on two letter single level TLD.
|
93
61
|
|
94
|
-
*
|
62
|
+
*John Hawthorn*
|
95
63
|
|
96
|
-
*
|
64
|
+
* Don't double log the `controller`, `action`, or `namespaced_controller` when using `ActiveRecord::QueryLog`
|
97
65
|
|
98
|
-
|
66
|
+
Previously if you set `config.active_record.query_log_tags` to an array that included
|
67
|
+
`:controller`, `:namespaced_controller`, or `:action`, that item would get logged twice.
|
68
|
+
This bug has been fixed.
|
99
69
|
|
100
70
|
*Alex Ghiculescu*
|
101
71
|
|
102
|
-
*
|
103
|
-
|
104
|
-
Fixes #42780.
|
105
|
-
|
106
|
-
*Petrik de Heus*
|
72
|
+
* Rescue `EOFError` exception from `rack` on a multipart request.
|
107
73
|
|
108
|
-
*
|
109
|
-
|
110
|
-
*Alex Ghiculescu*
|
74
|
+
*Nikita Vasilevsky*
|
111
75
|
|
76
|
+
* Rescue `JSON::ParserError` in Cookies json deserializer to discards marshal dumps:
|
112
77
|
|
113
|
-
|
78
|
+
Without this change, if `action_dispatch.cookies_serializer` is set to `:json` and
|
79
|
+
the app tries to read a `:marshal` serialized cookie, it would error out which wouldn't
|
80
|
+
clear the cookie and force app users to manually clear it in their browser.
|
114
81
|
|
115
|
-
|
82
|
+
(See #45127 for original bug discussion)
|
116
83
|
|
84
|
+
*Nathan Bardoux*
|
117
85
|
|
118
|
-
## Rails
|
86
|
+
## Rails 7.0.4.3 (March 13, 2023) ##
|
119
87
|
|
120
88
|
* No changes.
|
121
89
|
|
122
90
|
|
123
|
-
## Rails
|
91
|
+
## Rails 7.0.4.2 (January 24, 2023) ##
|
124
92
|
|
125
|
-
*
|
126
|
-
response body has been fully closed which result in request state not
|
127
|
-
being fully reset before the next request
|
93
|
+
* Fix `domain: :all` for two letter TLD
|
128
94
|
|
129
|
-
|
95
|
+
This fixes a compatibility issue introduced in our previous security
|
96
|
+
release when using `domain: :all` with a two letter but single level top
|
97
|
+
level domain domain (like `.ca`, rather than `.co.uk`).
|
130
98
|
|
131
99
|
|
132
|
-
## Rails
|
100
|
+
## Rails 7.0.4.1 (January 17, 2023) ##
|
133
101
|
|
134
|
-
* Fix issue with
|
102
|
+
* Fix sec issue with _url_host_allowed?
|
135
103
|
|
104
|
+
Disallow certain strings from `_url_host_allowed?` to avoid a redirect
|
105
|
+
to malicious sites.
|
136
106
|
|
137
|
-
|
107
|
+
[CVE-2023-22797]
|
138
108
|
|
139
|
-
*
|
109
|
+
* Avoid regex backtracking on If-None-Match header
|
140
110
|
|
111
|
+
[CVE-2023-22795]
|
141
112
|
|
142
|
-
|
113
|
+
* Use string#split instead of regex for domain parts
|
143
114
|
|
144
|
-
|
115
|
+
[CVE-2023-22792]
|
145
116
|
|
146
|
-
## Rails
|
117
|
+
## Rails 7.0.4 (September 09, 2022) ##
|
147
118
|
|
148
|
-
*
|
119
|
+
* Prevent `ActionDispatch::ServerTiming` from overwriting existing values in `Server-Timing`.
|
149
120
|
|
150
|
-
|
151
|
-
|
152
|
-
Pack to redirect users to a malicious website.
|
121
|
+
Previously, if another middleware down the chain set `Server-Timing` header,
|
122
|
+
it would overwritten by `ActionDispatch::ServerTiming`.
|
153
123
|
|
154
|
-
|
124
|
+
*Jakub Malinowski*
|
155
125
|
|
156
|
-
* Ignore file fixtures on `db:fixtures:load`
|
157
126
|
|
158
|
-
|
127
|
+
## Rails 7.0.3.1 (July 12, 2022) ##
|
159
128
|
|
160
|
-
*
|
129
|
+
* No changes.
|
161
130
|
|
162
|
-
*Dylan Thacker-Smith*
|
163
131
|
|
164
|
-
|
132
|
+
## Rails 7.0.3 (May 09, 2022) ##
|
165
133
|
|
166
|
-
|
167
|
-
of the path as parameter for example:
|
134
|
+
* Allow relative redirects when `raise_on_open_redirects` is enabled.
|
168
135
|
|
169
|
-
|
170
|
-
get "(/optional/:optional_id)/things" => "foo#foo", as: :things
|
171
|
-
things_path(optional_id: false) # => /things?optional_id=false
|
172
|
-
```
|
136
|
+
*Tom Hughes*
|
173
137
|
|
174
|
-
|
138
|
+
* Fix `authenticate_with_http_basic` to allow for missing password.
|
175
139
|
|
176
|
-
|
177
|
-
get '(this/:my_bool)/that' as: :that
|
140
|
+
Before Rails 7.0 it was possible to handle basic authentication with only a username.
|
178
141
|
|
179
|
-
|
180
|
-
|
142
|
+
```ruby
|
143
|
+
authenticate_with_http_basic do |token, _|
|
144
|
+
ApiClient.authenticate(token)
|
145
|
+
end
|
181
146
|
```
|
182
147
|
|
183
|
-
|
148
|
+
This ability is restored.
|
184
149
|
|
185
|
-
*
|
150
|
+
*Jean Boussier*
|
186
151
|
|
187
|
-
|
152
|
+
* Fix `content_security_policy` returning invalid directives.
|
188
153
|
|
189
|
-
|
154
|
+
Directives such as `self`, `unsafe-eval` and few others were not
|
155
|
+
single quoted when the directive was the result of calling a lambda
|
156
|
+
returning an array.
|
190
157
|
|
158
|
+
```ruby
|
159
|
+
content_security_policy do |policy|
|
160
|
+
policy.frame_ancestors lambda { [:self, "https://example.com"] }
|
161
|
+
end
|
162
|
+
```
|
191
163
|
|
192
|
-
|
164
|
+
With this fix the policy generated from above will now be valid.
|
193
165
|
|
194
|
-
*
|
195
|
-
CVE-2021-22903
|
166
|
+
*Edouard Chin*
|
196
167
|
|
197
|
-
*
|
198
|
-
|
168
|
+
* Fix `skip_forgery_protection` to run without raising an error if forgery
|
169
|
+
protection has not been enabled / `verify_authenticity_token` is not a
|
170
|
+
defined callback.
|
199
171
|
|
200
|
-
|
201
|
-
|
172
|
+
This fix prevents the Rails 7.0 Welcome Page (`/`) from raising an
|
173
|
+
`ArgumentError` if `default_protect_from_forgery` is false.
|
202
174
|
|
203
|
-
*
|
175
|
+
*Brad Trick*
|
204
176
|
|
205
|
-
|
206
|
-
of arguments (usually symbols and records). If a developer passes a
|
207
|
-
user input array, strings can result in unwanted route helper calls.
|
177
|
+
* Fix `ActionController::Live` to copy the IsolatedExecutionState in the ephemeral thread.
|
208
178
|
|
209
|
-
|
179
|
+
Since its inception `ActionController::Live` has been copying thread local variables
|
180
|
+
to keep things such as `CurrentAttributes` set from middlewares working in the controller action.
|
210
181
|
|
211
|
-
|
182
|
+
With the introduction of `IsolatedExecutionState` in 7.0, some of that global state was lost in
|
183
|
+
`ActionController::Live` controllers.
|
212
184
|
|
213
|
-
|
185
|
+
*Jean Boussier*
|
214
186
|
|
215
|
-
*
|
187
|
+
* Fix setting `trailing_slash: true` in route definition.
|
216
188
|
|
189
|
+
```ruby
|
190
|
+
get '/test' => "test#index", as: :test, trailing_slash: true
|
217
191
|
|
218
|
-
|
192
|
+
test_path() # => "/test/"
|
193
|
+
```
|
219
194
|
|
220
|
-
*
|
195
|
+
*Jean Boussier*
|
221
196
|
|
222
|
-
|
197
|
+
## Rails 7.0.2.4 (April 26, 2022) ##
|
223
198
|
|
199
|
+
* Allow Content Security Policy DSL to generate for API responses.
|
224
200
|
|
225
|
-
|
201
|
+
*Tim Wade*
|
226
202
|
|
227
|
-
|
203
|
+
## Rails 7.0.2.3 (March 08, 2022) ##
|
228
204
|
|
229
|
-
|
205
|
+
* No changes.
|
230
206
|
|
231
|
-
Thanks to @tktech (https://hackerone.com/tktech) for reporting this
|
232
|
-
issue and the patch!
|
233
207
|
|
234
|
-
|
208
|
+
## Rails 7.0.2.2 (February 11, 2022) ##
|
235
209
|
|
210
|
+
* No changes.
|
236
211
|
|
237
|
-
## Rails 6.1.2 (February 09, 2021) ##
|
238
212
|
|
239
|
-
|
213
|
+
## Rails 7.0.2.1 (February 11, 2022) ##
|
240
214
|
|
241
|
-
|
215
|
+
* Under certain circumstances, the middleware isn't informed that the
|
216
|
+
response body has been fully closed which result in request state not
|
217
|
+
being fully reset before the next request
|
242
218
|
|
243
|
-
|
219
|
+
[CVE-2022-23633]
|
244
220
|
|
245
|
-
*Eugene Kenny*
|
246
221
|
|
222
|
+
## Rails 7.0.2 (February 08, 2022) ##
|
247
223
|
|
248
|
-
|
224
|
+
* No changes.
|
249
225
|
|
250
|
-
* Fix nil translation key lookup in controllers/
|
251
226
|
|
252
|
-
|
227
|
+
## Rails 7.0.1 (January 06, 2022) ##
|
253
228
|
|
254
|
-
*
|
229
|
+
* Fix `ActionController::Parameters` methods to keep the original logger context when creating a new copy
|
230
|
+
of the original object.
|
255
231
|
|
256
|
-
*
|
232
|
+
*Yutaka Kamei*
|
257
233
|
|
258
|
-
* Change the request method to a `GET` when passing failed requests down to `config.exceptions_app`.
|
259
234
|
|
260
|
-
|
235
|
+
## Rails 7.0.0 (December 15, 2021) ##
|
261
236
|
|
237
|
+
* Deprecate `Rails.application.config.action_controller.urlsafe_csrf_tokens`. This config is now always enabled.
|
262
238
|
|
263
|
-
|
239
|
+
*Étienne Barrié*
|
264
240
|
|
265
|
-
*
|
266
|
-
its [rename](https://github.com/w3c/webappsec-permissions-policy/pull/379) to [`Permissions-Policy`](https://w3c.github.io/webappsec-permissions-policy/#permissions-policy-http-header-field).
|
241
|
+
* Instance variables set in requests in a `ActionController::TestCase` are now cleared before the next request
|
267
242
|
|
268
|
-
|
269
|
-
|
270
|
-
p.camera :none
|
271
|
-
p.gyroscope :none
|
272
|
-
p.microphone :none
|
273
|
-
p.usb :none
|
274
|
-
p.fullscreen :self
|
275
|
-
p.payment :self, "https://secure-example.com"
|
276
|
-
end
|
277
|
-
```
|
243
|
+
This means if you make multiple requests in the same test, instance variables set in the first request will
|
244
|
+
not persist into the second one. (It's not recommended to make multiple requests in the same test.)
|
278
245
|
|
279
|
-
*
|
246
|
+
*Alex Ghiculescu*
|
280
247
|
|
281
|
-
* Allow `ActionDispatch::HostAuthorization` to exclude specific requests.
|
282
248
|
|
283
|
-
|
249
|
+
## Rails 7.0.0.rc3 (December 14, 2021) ##
|
284
250
|
|
285
|
-
|
251
|
+
* No changes.
|
286
252
|
|
287
|
-
* Add `config.action_dispatch.request_id_header` to allow changing the name of
|
288
|
-
the unique X-Request-Id header
|
289
253
|
|
290
|
-
|
254
|
+
## Rails 7.0.0.rc2 (December 14, 2021) ##
|
291
255
|
|
292
|
-
*
|
256
|
+
* Fix X_FORWARDED_HOST protection. [CVE-2021-44528]
|
293
257
|
|
294
|
-
*Rafael Mendonça França*
|
295
258
|
|
296
|
-
|
259
|
+
## Rails 7.0.0.rc1 (December 06, 2021) ##
|
297
260
|
|
298
|
-
|
261
|
+
* `Rails.application.executor` hooks can now be called around every request in a `ActionController::TestCase`
|
299
262
|
|
300
|
-
|
263
|
+
This helps to better simulate request or job local state being reset between requests and prevent state
|
264
|
+
leaking from one request to another.
|
301
265
|
|
302
|
-
|
266
|
+
To enable this, set `config.active_support.executor_around_test_case = true` (this is the default in Rails 7).
|
303
267
|
|
304
|
-
*
|
268
|
+
*Alex Ghiculescu*
|
305
269
|
|
306
|
-
|
270
|
+
* Consider onion services secure for cookies.
|
307
271
|
|
308
|
-
*
|
272
|
+
*Justin Tracey*
|
309
273
|
|
310
|
-
*
|
274
|
+
* Remove deprecated `Rails.config.action_view.raise_on_missing_translations`.
|
311
275
|
|
312
|
-
|
313
|
-
`ActionDispatch::Http::Request#POST` prior to validating encoding.
|
276
|
+
*Rafael Mendonça França*
|
314
277
|
|
315
|
-
|
278
|
+
* Remove deprecated support to passing a path to `fixture_file_upload` relative to `fixture_path`.
|
316
279
|
|
317
|
-
*
|
280
|
+
*Rafael Mendonça França*
|
318
281
|
|
319
|
-
|
282
|
+
* Remove deprecated `ActionDispatch::SystemTestCase#host!`.
|
320
283
|
|
321
|
-
*
|
284
|
+
*Rafael Mendonça França*
|
322
285
|
|
323
|
-
|
286
|
+
* Remove deprecated `Rails.config.action_dispatch.hosts_response_app`.
|
324
287
|
|
325
|
-
*
|
326
|
-
a 308 redirection.
|
288
|
+
*Rafael Mendonça França*
|
327
289
|
|
328
|
-
|
290
|
+
* Remove deprecated `ActionDispatch::Response.return_only_media_type_on_content_type`.
|
329
291
|
|
330
|
-
*
|
331
|
-
chosen only if it is equal to or is a superdomain of the request host.
|
292
|
+
*Rafael Mendonça França*
|
332
293
|
|
333
|
-
|
294
|
+
* Raise `ActionController::Redirecting::UnsafeRedirectError` for unsafe `redirect_to` redirects.
|
334
295
|
|
335
|
-
|
296
|
+
This allows `rescue_from` to be used to add a default fallback route:
|
336
297
|
|
337
|
-
|
338
|
-
|
298
|
+
```ruby
|
299
|
+
rescue_from ActionController::Redirecting::UnsafeRedirectError do
|
300
|
+
redirect_to root_url
|
301
|
+
end
|
302
|
+
```
|
339
303
|
|
340
|
-
|
341
|
-
we check for public/some.js.br and serve that file, if present, with
|
342
|
-
`Content-Encoding: br` and `Vary: Accept-Encoding` headers.
|
304
|
+
*Kasper Timm Hansen*, *Chris Oliver*
|
343
305
|
|
344
|
-
|
306
|
+
* Add `url_from` to verify a redirect location is internal.
|
345
307
|
|
346
|
-
|
308
|
+
Takes the open redirect protection from `redirect_to` so users can wrap a
|
309
|
+
param, and fall back to an alternate redirect URL when the param provided
|
310
|
+
one is unsafe.
|
347
311
|
|
348
|
-
|
349
|
-
|
350
|
-
|
312
|
+
```ruby
|
313
|
+
def create
|
314
|
+
redirect_to url_from(params[:redirect_url]) || root_url
|
315
|
+
end
|
316
|
+
```
|
351
317
|
|
352
|
-
*
|
318
|
+
*dmcge*, *Kasper Timm Hansen*
|
353
319
|
|
354
|
-
*
|
320
|
+
* Allow Capybara driver name overrides in `SystemTestCase::driven_by`
|
355
321
|
|
356
|
-
|
322
|
+
Allow users to prevent conflicts among drivers that use the same driver
|
323
|
+
type (selenium, poltergeist, webkit, rack test).
|
357
324
|
|
358
|
-
|
359
|
-
without passing a block now returns an enumerator.
|
325
|
+
Fixes #42502
|
360
326
|
|
361
|
-
*
|
327
|
+
*Chris LaRose*
|
362
328
|
|
363
|
-
*
|
329
|
+
* Allow multiline to be passed in routes when using wildcard segments.
|
364
330
|
|
365
|
-
Previously
|
366
|
-
|
331
|
+
Previously routes with newlines weren't detected when using wildcard segments, returning
|
332
|
+
a `No route matches` error.
|
333
|
+
After this change, routes with newlines are detected on wildcard segments. Example
|
367
334
|
|
368
335
|
```ruby
|
369
|
-
|
370
|
-
|
336
|
+
draw do
|
337
|
+
get "/wildcard/*wildcard_segment", to: SimpleApp.new("foo#index"), as: :wildcard
|
338
|
+
end
|
371
339
|
|
372
|
-
|
373
|
-
|
340
|
+
# After the change, the path matches.
|
341
|
+
assert_equal "/wildcard/a%0Anewline", url_helpers.wildcard_path(wildcard_segment: "a\nnewline")
|
374
342
|
```
|
375
343
|
|
376
|
-
|
344
|
+
Fixes #39103
|
377
345
|
|
378
|
-
*
|
346
|
+
*Ignacio Chiazzo*
|
379
347
|
|
380
|
-
|
348
|
+
* Treat html suffix in controller translation.
|
381
349
|
|
382
|
-
*
|
383
|
-
strings/symbols with `String#constantize` instead of `require_dependency`.
|
350
|
+
*Rui Onodera*, *Gavin Miller*
|
384
351
|
|
385
|
-
|
386
|
-
always pass a module object:
|
352
|
+
* Allow permitting numeric params.
|
387
353
|
|
354
|
+
Previously it was impossible to permit different fields on numeric parameters.
|
355
|
+
After this change you can specify different fields for each numbered parameter.
|
356
|
+
For example params like,
|
388
357
|
```ruby
|
389
|
-
|
358
|
+
book: {
|
359
|
+
authors_attributes: {
|
360
|
+
'0': { name: "William Shakespeare", age_of_death: "52" },
|
361
|
+
'1': { name: "Unattributed Assistant" },
|
362
|
+
'2': "Not a hash",
|
363
|
+
'new_record': { name: "Some name" }
|
364
|
+
}
|
365
|
+
}
|
390
366
|
```
|
391
367
|
|
392
|
-
|
393
|
-
|
394
|
-
that same module object.
|
395
|
-
|
396
|
-
*Xavier Noria*, *Jean Boussier*
|
397
|
-
|
398
|
-
* Correctly identify the entire localhost IPv4 range as trusted proxy.
|
368
|
+
Before you could permit name on each author with,
|
369
|
+
`permit book: { authors_attributes: [ :name ] }`
|
399
370
|
|
400
|
-
|
371
|
+
After this change you can permit different keys on each numbered element,
|
372
|
+
`permit book: { authors_attributes: { '1': [ :name ], '0': [ :name, :age_of_death ] } }`
|
401
373
|
|
402
|
-
|
403
|
-
`Rails.application.config.force_ssl` is set to true.
|
374
|
+
Fixes #41625
|
404
375
|
|
405
|
-
*
|
406
|
-
|
407
|
-
* Accept and default to base64_urlsafe CSRF tokens.
|
376
|
+
*Adam Hess*
|
408
377
|
|
409
|
-
|
410
|
-
|
411
|
-
the CSRF token to a browser in a client-readable cookie does not work properly
|
412
|
-
out of the box: the value has to be url-encoded and decoded to survive transport.
|
378
|
+
* Update `HostAuthorization` middleware to render debug info only
|
379
|
+
when `config.consider_all_requests_local` is set to true.
|
413
380
|
|
414
|
-
|
415
|
-
to transport. Validation accepts both urlsafe tokens, and strict-encoded tokens
|
416
|
-
for backwards compatibility.
|
381
|
+
Also, blocked host info is always logged with level `error`.
|
417
382
|
|
418
|
-
|
383
|
+
Fixes #42813
|
419
384
|
|
420
|
-
*
|
385
|
+
*Nikita Vyrko*
|
421
386
|
|
422
|
-
|
423
|
-
both old and new instances during deployment. Users may be served by a
|
424
|
-
new instance and then by an old instance.
|
387
|
+
* Add Server-Timing middleware
|
425
388
|
|
426
|
-
|
427
|
-
|
428
|
-
from `false` to `true`, users may lose their sessions if they access the
|
429
|
-
server during deployment.
|
389
|
+
Server-Timing specification defines how the server can communicate to browsers performance metrics
|
390
|
+
about the request it is responding to.
|
430
391
|
|
431
|
-
|
432
|
-
|
392
|
+
The ServerTiming middleware is enabled by default on `development` environment by default using the
|
393
|
+
`config.server_timing` setting and set the relevant duration metrics in the `Server-Timing` header
|
433
394
|
|
434
|
-
|
395
|
+
The full specification for Server-Timing header can be found in: https://www.w3.org/TR/server-timing/#dfn-server-timing-header-field
|
435
396
|
|
436
|
-
*
|
397
|
+
*Sebastian Sogamoso*, *Guillermo Iguaran*
|
437
398
|
|
438
|
-
Before, if all `X-Forwarded-For` sites were trusted, the `remote_ip` would default to `127.0.0.1`.
|
439
|
-
Now, the furthest proxy site is used. e.g.: It now gives an ip address when using curl from the load balancer.
|
440
399
|
|
441
|
-
|
400
|
+
## Rails 7.0.0.alpha2 (September 15, 2021) ##
|
442
401
|
|
443
|
-
*
|
402
|
+
* No changes.
|
444
403
|
|
445
|
-
The `ActionDispatch::Session::MemcacheStore` is still vulnerable given it requires the
|
446
|
-
gem dalli to be updated as well.
|
447
404
|
|
448
|
-
|
405
|
+
## Rails 7.0.0.alpha1 (September 15, 2021) ##
|
449
406
|
|
450
|
-
*
|
407
|
+
* Use a static error message when raising `ActionDispatch::Http::Parameters::ParseError`
|
408
|
+
to avoid inadvertently logging the HTTP request body at the `fatal` level when it contains
|
409
|
+
malformed JSON.
|
451
410
|
|
452
|
-
|
453
|
-
meant it had its own copy of `@assertions`. This prevented the assertions
|
454
|
-
from being correctly counted and reported.
|
411
|
+
Fixes #41145
|
455
412
|
|
456
|
-
|
457
|
-
root session.
|
413
|
+
*Aaron Lahey*
|
458
414
|
|
459
|
-
|
415
|
+
* Add `Middleware#delete!` to delete middleware or raise if not found.
|
460
416
|
|
461
|
-
|
417
|
+
`Middleware#delete!` works just like `Middleware#delete` but will
|
418
|
+
raise an error if the middleware isn't found.
|
462
419
|
|
463
|
-
*
|
420
|
+
*Alex Ghiculescu*, *Petrik de Heus*, *Junichi Sato*
|
464
421
|
|
465
|
-
|
466
|
-
where cookies won't be sent by browsers in cross-site POST requests when set to `:lax`.
|
422
|
+
* Raise error on unpermitted open redirects.
|
467
423
|
|
468
|
-
|
424
|
+
Add `allow_other_host` options to `redirect_to`.
|
425
|
+
Opt in to this behaviour with `ActionController::Base.raise_on_open_redirects = true`.
|
469
426
|
|
470
|
-
|
427
|
+
*Gannon McGibbon*
|
471
428
|
|
472
|
-
|
429
|
+
* Deprecate `poltergeist` and `webkit` (capybara-webkit) driver registration for system testing (they will be removed in Rails 7.1). Add `cuprite` instead.
|
473
430
|
|
474
|
-
|
431
|
+
[Poltergeist](https://github.com/teampoltergeist/poltergeist) and [capybara-webkit](https://github.com/thoughtbot/capybara-webkit) are already not maintained. These usage in Rails are removed for avoiding confusing users.
|
475
432
|
|
476
|
-
|
433
|
+
[Cuprite](https://github.com/rubycdp/cuprite) is a good alternative to Poltergeist. Some guide descriptions are replaced from Poltergeist to Cuprite.
|
477
434
|
|
478
|
-
*
|
435
|
+
*Yusuke Iwaki*
|
479
436
|
|
480
|
-
*
|
437
|
+
* Exclude additional flash types from `ActionController::Base.action_methods`.
|
481
438
|
|
482
|
-
|
483
|
-
|
484
|
-
that this wasn't fully the case and loading external route files from the router
|
485
|
-
can be helpful for applications with a really large set of routes.
|
486
|
-
Without this feature, application needs to implement routes reloading
|
487
|
-
themselves and it's not straightforward.
|
439
|
+
Ensures that additional flash types defined on ActionController::Base subclasses
|
440
|
+
are not listed as actions on that controller.
|
488
441
|
|
489
|
-
|
490
|
-
|
442
|
+
class MyController < ApplicationController
|
443
|
+
add_flash_types :hype
|
444
|
+
end
|
491
445
|
|
492
|
-
|
493
|
-
draw(:admin)
|
494
|
-
end
|
446
|
+
MyController.action_methods.include?('hype') # => false
|
495
447
|
|
496
|
-
|
448
|
+
*Gavin Morrice*
|
497
449
|
|
498
|
-
|
499
|
-
```
|
450
|
+
* OpenSSL constants are now used for Digest computations.
|
500
451
|
|
501
|
-
*
|
452
|
+
*Dirkjan Bussink*
|
502
453
|
|
503
|
-
*
|
454
|
+
* Remove IE6-7-8 file download related hack/fix from ActionController::DataStreaming module.
|
504
455
|
|
505
|
-
|
456
|
+
Due to the age of those versions of IE this fix is no longer relevant, more importantly it creates an edge-case for unexpected Cache-Control headers.
|
506
457
|
|
507
|
-
*
|
508
|
-
their payloads as `:request`.
|
458
|
+
*Tadas Sasnauskas*
|
509
459
|
|
510
|
-
|
460
|
+
* Configuration setting to skip logging an uncaught exception backtrace when the exception is
|
461
|
+
present in `rescued_responses`.
|
511
462
|
|
512
|
-
|
513
|
-
|
463
|
+
It may be too noisy to get all backtraces logged for applications that manage uncaught
|
464
|
+
exceptions via `rescued_responses` and `exceptions_app`.
|
465
|
+
`config.action_dispatch.log_rescued_responses` (defaults to `true`) can be set to `false` in
|
466
|
+
this case, so that only exceptions not found in `rescued_responses` will be logged.
|
514
467
|
|
515
|
-
|
468
|
+
*Alexander Azarov*, *Mike Dalessio*
|
516
469
|
|
517
|
-
|
518
|
-
def my_action
|
519
|
-
respond_to do |format|
|
520
|
-
format.any { render(json: { foo: 'bar' }) }
|
521
|
-
end
|
522
|
-
end
|
470
|
+
* Ignore file fixtures on `db:fixtures:load`.
|
523
471
|
|
524
|
-
|
525
|
-
```
|
472
|
+
*Kevin Sjöberg*
|
526
473
|
|
527
|
-
|
528
|
-
is inaccurate since a JSON response is being rendered.
|
474
|
+
* Fix ActionController::Live controller test deadlocks by removing the body buffer size limit for tests.
|
529
475
|
|
530
|
-
|
476
|
+
*Dylan Thacker-Smith*
|
531
477
|
|
532
|
-
|
478
|
+
* New `ActionController::ConditionalGet#no_store` method to set HTTP cache control `no-store` directive.
|
533
479
|
|
534
|
-
*
|
480
|
+
*Tadas Sasnauskas*
|
535
481
|
|
536
|
-
|
537
|
-
nested directory, causing issues with `tmp:clear`.
|
482
|
+
* Drop support for the `SERVER_ADDR` header.
|
538
483
|
|
539
|
-
|
484
|
+
Following up https://github.com/rack/rack/pull/1573 and https://github.com/rails/rails/pull/42349.
|
540
485
|
|
541
|
-
*
|
486
|
+
*Ricardo Díaz*
|
542
487
|
|
543
|
-
|
488
|
+
* Set session options when initializing a basic session.
|
544
489
|
|
545
|
-
*
|
490
|
+
*Gannon McGibbon*
|
546
491
|
|
547
|
-
|
548
|
-
* `:response` - the `ActionDispatch::Response`
|
492
|
+
* Add `cache_control: {}` option to `fresh_when` and `stale?`.
|
549
493
|
|
550
|
-
|
494
|
+
Works as a shortcut to set `response.cache_control` with the above methods.
|
551
495
|
|
552
|
-
*
|
553
|
-
`remote_ip` to `nil` before setting the header that the value is derived
|
554
|
-
from.
|
496
|
+
*Jacopo Beschi*
|
555
497
|
|
556
|
-
|
498
|
+
* Writing into a disabled session will now raise an error.
|
557
499
|
|
558
|
-
|
500
|
+
Previously when no session store was set, writing into the session would silently fail.
|
559
501
|
|
560
|
-
*
|
502
|
+
*Jean Boussier*
|
561
503
|
|
562
|
-
|
563
|
-
# Use the debug level if a particular cookie is set.
|
564
|
-
class ApplicationController < ActionController::Base
|
565
|
-
log_at :debug, if: -> { cookies[:debug] }
|
566
|
-
end
|
567
|
-
```
|
504
|
+
* Add support for 'require-trusted-types-for' and 'trusted-types' headers.
|
568
505
|
|
569
|
-
|
506
|
+
Fixes #42034.
|
570
507
|
|
571
|
-
*
|
572
|
-
a test by prefixing the file name with an incrementing counter.
|
508
|
+
*lfalcao*
|
573
509
|
|
574
|
-
|
575
|
-
enable saving of HTML during a screenshot in addition to the image.
|
576
|
-
This uses the same image name, with the extension replaced with `.html`
|
510
|
+
* Remove inline styles and address basic accessibility issues on rescue templates.
|
577
511
|
|
578
|
-
*
|
512
|
+
*Jacob Herrington*
|
579
513
|
|
580
|
-
* Add
|
514
|
+
* Add support for 'private, no-store' Cache-Control headers.
|
581
515
|
|
582
|
-
|
583
|
-
header to determine what to return. And if we don't add `Vary`
|
584
|
-
in the response header, browsers might accidentally cache different
|
585
|
-
types of content, which would cause issues: e.g. javascript got displayed
|
586
|
-
instead of html content. This PR fixes these issues by adding `Vary: Accept`
|
587
|
-
in these types of requests. For more detailed problem description, please read:
|
516
|
+
Previously, 'no-store' was exclusive; no other directives could be specified.
|
588
517
|
|
589
|
-
|
518
|
+
*Alex Smith*
|
590
519
|
|
591
|
-
|
520
|
+
* Expand payload of `unpermitted_parameters.action_controller` instrumentation to allow subscribers to
|
521
|
+
know which controller action received unpermitted parameters.
|
592
522
|
|
593
|
-
*
|
523
|
+
*bbuchalter*
|
594
524
|
|
595
|
-
*
|
596
|
-
a 307 redirection.
|
525
|
+
* Add `ActionController::Live#send_stream` that makes it more convenient to send generated streams:
|
597
526
|
|
598
|
-
|
527
|
+
```ruby
|
528
|
+
send_stream(filename: "subscribers.csv") do |stream|
|
529
|
+
stream.writeln "email_address,updated_at"
|
599
530
|
|
600
|
-
|
531
|
+
@subscribers.find_each do |subscriber|
|
532
|
+
stream.writeln [ subscriber.email_address, subscriber.updated_at ].join(",")
|
533
|
+
end
|
534
|
+
end
|
535
|
+
```
|
601
536
|
|
602
|
-
*
|
537
|
+
*DHH*
|
603
538
|
|
604
|
-
*
|
539
|
+
* Add `ActionController::Live::Buffer#writeln` to write a line to the stream with a newline included.
|
605
540
|
|
606
|
-
*
|
541
|
+
*DHH*
|
607
542
|
|
608
|
-
*
|
543
|
+
* `ActionDispatch::Request#content_type` now returned Content-Type header as it is.
|
609
544
|
|
610
|
-
|
611
|
-
|
612
|
-
specification and guidelines can be found at MDN:
|
545
|
+
Previously, `ActionDispatch::Request#content_type` returned value does NOT contain charset part.
|
546
|
+
This behavior changed to returned Content-Type header containing charset part as it is.
|
613
547
|
|
614
|
-
|
548
|
+
If you want just MIME type, please use `ActionDispatch::Request#media_type` instead.
|
615
549
|
|
616
|
-
|
550
|
+
Before:
|
617
551
|
|
618
552
|
```ruby
|
619
|
-
|
620
|
-
|
621
|
-
f.gyroscope :none
|
622
|
-
f.microphone :none
|
623
|
-
f.usb :none
|
624
|
-
f.fullscreen :self
|
625
|
-
f.payment :self, "https://secure.example.com"
|
626
|
-
end
|
553
|
+
request = ActionDispatch::Request.new("CONTENT_TYPE" => "text/csv; header=present; charset=utf-16", "REQUEST_METHOD" => "GET")
|
554
|
+
request.content_type #=> "text/csv"
|
627
555
|
```
|
628
556
|
|
629
|
-
|
557
|
+
After:
|
630
558
|
|
631
559
|
```ruby
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
end
|
636
|
-
end
|
560
|
+
request = ActionDispatch::Request.new("Content-Type" => "text/csv; header=present; charset=utf-16", "REQUEST_METHOD" => "GET")
|
561
|
+
request.content_type #=> "text/csv; header=present; charset=utf-16"
|
562
|
+
request.media_type #=> "text/csv"
|
637
563
|
```
|
638
564
|
|
639
|
-
*
|
565
|
+
*Rafael Mendonça França*
|
640
566
|
|
641
|
-
*
|
567
|
+
* Change `ActionDispatch::Request#media_type` to return `nil` when the request don't have a `Content-Type` header.
|
642
568
|
|
643
|
-
|
569
|
+
*Rafael Mendonça França*
|
644
570
|
|
645
|
-
|
571
|
+
* Fix error in `ActionController::LogSubscriber` that would happen when throwing inside a controller action.
|
646
572
|
|
647
|
-
*
|
573
|
+
*Janko Marohnić*
|
648
574
|
|
649
|
-
|
650
|
-
take parameters the scope was lost when using path helpers. This commit
|
651
|
-
ensures scope is kept both when the route takes parameters or when it
|
652
|
-
doesn't.
|
575
|
+
* Allow anything with `#to_str` (like `Addressable::URI`) as a `redirect_to` location.
|
653
576
|
|
654
|
-
|
577
|
+
*ojab*
|
655
578
|
|
656
|
-
|
579
|
+
* Change the request method to a `GET` when passing failed requests down to `config.exceptions_app`.
|
657
580
|
|
658
|
-
*
|
581
|
+
*Alex Robbin*
|
659
582
|
|
660
|
-
|
583
|
+
* Deprecate the ability to assign a single value to `config.action_dispatch.trusted_proxies`
|
584
|
+
as `RemoteIp` middleware behaves inconsistently depending on whether this is configured
|
585
|
+
with a single value or an enumerable.
|
661
586
|
|
662
|
-
|
663
|
-
an enumerator for the parameters instead of the underlying hash.
|
587
|
+
Fixes #40772.
|
664
588
|
|
665
|
-
*
|
589
|
+
*Christian Sutter*
|
666
590
|
|
667
|
-
*
|
668
|
-
|
591
|
+
* Add `redirect_back_or_to(fallback_location, **)` as a more aesthetically pleasing version of `redirect_back fallback_location:, **`.
|
592
|
+
The old method name is retained without explicit deprecation.
|
669
593
|
|
670
|
-
*
|
594
|
+
*DHH*
|
671
595
|
|
672
596
|
|
673
|
-
Please check [6-
|
597
|
+
Please check [6-1-stable](https://github.com/rails/rails/blob/6-1-stable/actionpack/CHANGELOG.md) for previous changes.
|