actionpack 8.0.3 → 8.1.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +243 -168
- data/lib/abstract_controller/asset_paths.rb +4 -2
- data/lib/abstract_controller/base.rb +10 -2
- data/lib/abstract_controller/caching.rb +6 -3
- data/lib/abstract_controller/logger.rb +2 -1
- data/lib/action_controller/base.rb +1 -1
- data/lib/action_controller/caching.rb +1 -2
- data/lib/action_controller/form_builder.rb +1 -1
- data/lib/action_controller/log_subscriber.rb +7 -0
- data/lib/action_controller/metal/allow_browser.rb +1 -1
- data/lib/action_controller/metal/conditional_get.rb +25 -0
- data/lib/action_controller/metal/data_streaming.rb +1 -3
- data/lib/action_controller/metal/exceptions.rb +5 -0
- data/lib/action_controller/metal/flash.rb +1 -4
- data/lib/action_controller/metal/head.rb +3 -1
- data/lib/action_controller/metal/permissions_policy.rb +9 -0
- data/lib/action_controller/metal/rate_limiting.rb +22 -7
- data/lib/action_controller/metal/redirecting.rb +61 -5
- data/lib/action_controller/metal/renderers.rb +27 -6
- data/lib/action_controller/metal/rendering.rb +7 -1
- data/lib/action_controller/metal/request_forgery_protection.rb +18 -10
- data/lib/action_controller/metal/rescue.rb +9 -0
- data/lib/action_controller/railtie.rb +2 -6
- data/lib/action_dispatch/http/cache.rb +111 -1
- data/lib/action_dispatch/http/filter_parameters.rb +5 -3
- data/lib/action_dispatch/http/mime_types.rb +1 -0
- data/lib/action_dispatch/http/param_builder.rb +28 -27
- data/lib/action_dispatch/http/parameters.rb +3 -3
- data/lib/action_dispatch/http/permissions_policy.rb +4 -0
- data/lib/action_dispatch/http/query_parser.rb +12 -10
- data/lib/action_dispatch/http/request.rb +10 -5
- data/lib/action_dispatch/http/response.rb +16 -3
- data/lib/action_dispatch/http/url.rb +99 -3
- data/lib/action_dispatch/journey/gtg/simulator.rb +33 -12
- data/lib/action_dispatch/journey/gtg/transition_table.rb +33 -43
- data/lib/action_dispatch/journey/nodes/node.rb +2 -1
- data/lib/action_dispatch/journey/route.rb +45 -31
- data/lib/action_dispatch/journey/router/utils.rb +8 -14
- data/lib/action_dispatch/journey/router.rb +59 -81
- data/lib/action_dispatch/journey/routes.rb +7 -0
- data/lib/action_dispatch/journey/visitors.rb +55 -23
- data/lib/action_dispatch/journey/visualizer/fsm.js +4 -6
- data/lib/action_dispatch/middleware/cookies.rb +4 -2
- data/lib/action_dispatch/middleware/debug_exceptions.rb +7 -1
- data/lib/action_dispatch/middleware/debug_view.rb +11 -0
- data/lib/action_dispatch/middleware/exception_wrapper.rb +11 -5
- data/lib/action_dispatch/middleware/executor.rb +12 -2
- data/lib/action_dispatch/middleware/public_exceptions.rb +1 -5
- data/lib/action_dispatch/middleware/session/cache_store.rb +17 -0
- data/lib/action_dispatch/middleware/templates/rescues/_copy_button.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/_source.html.erb +3 -2
- data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +9 -5
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +50 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +1 -0
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +1 -0
- data/lib/action_dispatch/railtie.rb +10 -2
- data/lib/action_dispatch/routing/inspector.rb +4 -1
- data/lib/action_dispatch/routing/mapper.rb +323 -173
- data/lib/action_dispatch/routing/route_set.rb +2 -4
- data/lib/action_dispatch/routing/routes_proxy.rb +0 -1
- data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +2 -2
- data/lib/action_dispatch/testing/assertions/response.rb +14 -0
- data/lib/action_dispatch/testing/assertions/routing.rb +11 -3
- data/lib/action_dispatch/testing/integration.rb +3 -2
- data/lib/action_pack/gem_version.rb +3 -3
- metadata +11 -10
@@ -11,8 +11,9 @@
|
|
11
11
|
<tr>
|
12
12
|
<td>
|
13
13
|
<pre class="line_numbers">
|
14
|
-
<% source_extract[:code].each_key do |
|
15
|
-
|
14
|
+
<% source_extract[:code].each_key do |line| %>
|
15
|
+
<% file_url = editor_url(source_extract[:trace], line: line) %>
|
16
|
+
<span><%= link_to_if file_url, line, file_url -%></span>
|
16
17
|
<% end %>
|
17
18
|
</pre>
|
18
19
|
</td>
|
@@ -13,13 +13,17 @@
|
|
13
13
|
<% end %>
|
14
14
|
|
15
15
|
<% traces.each do |name, trace| %>
|
16
|
-
<div id="<%= "#{name.gsub(/\s/, '-')}-#{error_index}" %>" style="display: <%= (name == trace_to_show) ? 'block' : 'none' %>;">
|
16
|
+
<div id="<%= "#{name.gsub(/\s/, '-')}-#{error_index}" %>" class="trace-container" style="display: <%= (name == trace_to_show) ? 'block' : 'none' %>;">
|
17
17
|
<code class="traces">
|
18
18
|
<% trace.each do |frame| %>
|
19
|
-
<
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
<div class="trace">
|
20
|
+
<% file_url = editor_url(frame[:trace]) %>
|
21
|
+
<%= file_url && link_to("✏️", file_url, class: "edit-icon") %>
|
22
|
+
<a class="trace-frames trace-frames-<%= error_index %>" data-exception-object-id="<%= frame[:exception_object_id] %>" data-frame-id="<%= frame[:id] %>" href="#">
|
23
|
+
<%= frame[:trace] %>
|
24
|
+
</a>
|
25
|
+
<br>
|
26
|
+
</div>
|
23
27
|
<% end %>
|
24
28
|
</code>
|
25
29
|
</div>
|
@@ -38,6 +38,22 @@
|
|
38
38
|
padding: 0.5em 1.5em;
|
39
39
|
}
|
40
40
|
|
41
|
+
header button {
|
42
|
+
appearance: none;
|
43
|
+
background-color: hsl(0 0% 0% / 0.2);
|
44
|
+
border: 0;
|
45
|
+
border-radius: 14px;
|
46
|
+
color: white;
|
47
|
+
float: right;
|
48
|
+
font-weight: 500;
|
49
|
+
height: 28px;
|
50
|
+
padding-inline: 14px;
|
51
|
+
margin: 0.35em 0;
|
52
|
+
}
|
53
|
+
header button:active {
|
54
|
+
background-color: hsl(0 0% 0% / 0.25);
|
55
|
+
}
|
56
|
+
|
41
57
|
h1 {
|
42
58
|
overflow-wrap: break-word;
|
43
59
|
margin: 0.2em 0;
|
@@ -54,6 +70,30 @@
|
|
54
70
|
font-size: 11px;
|
55
71
|
}
|
56
72
|
|
73
|
+
.trace-container {
|
74
|
+
margin-top: 10px;
|
75
|
+
}
|
76
|
+
|
77
|
+
code.traces .trace {
|
78
|
+
display: flex;
|
79
|
+
align-items: center;
|
80
|
+
gap: 2px;
|
81
|
+
}
|
82
|
+
|
83
|
+
.edit-icon {
|
84
|
+
width: 16px;
|
85
|
+
height: 16px;
|
86
|
+
display: flex;
|
87
|
+
font-size: 13px;
|
88
|
+
align-items: center;
|
89
|
+
justify-content: center;
|
90
|
+
text-decoration: none;
|
91
|
+
}
|
92
|
+
|
93
|
+
.edit-icon:hover {
|
94
|
+
scale: 1.05;
|
95
|
+
}
|
96
|
+
|
57
97
|
.response-heading, .request-heading {
|
58
98
|
margin-top: 30px;
|
59
99
|
}
|
@@ -274,11 +314,21 @@
|
|
274
314
|
var toggleEnvDump = function() {
|
275
315
|
return toggle('env_dump');
|
276
316
|
}
|
317
|
+
var copyAsText = function() {
|
318
|
+
const text = document.getElementById("exception-message-for-copy").textContent;
|
319
|
+
|
320
|
+
navigator.clipboard.writeText(text).then(() => {
|
321
|
+
const beforeText = this.innerText;
|
322
|
+
this.innerText = "Copied!"
|
323
|
+
setTimeout(() => this.innerText = beforeText, 1000)
|
324
|
+
})
|
325
|
+
}
|
277
326
|
</script>
|
278
327
|
</head>
|
279
328
|
<body>
|
280
329
|
|
281
330
|
<%= yield %>
|
331
|
+
<script type="text/plain" id="exception-message-for-copy"><%= raw @exception_message_for_copy %></script>
|
282
332
|
|
283
333
|
</body>
|
284
334
|
</html>
|
@@ -55,8 +55,16 @@ module ActionDispatch
|
|
55
55
|
ActionDispatch::Http::URL.secure_protocol = app.config.force_ssl
|
56
56
|
ActionDispatch::Http::URL.tld_length = app.config.action_dispatch.tld_length
|
57
57
|
|
58
|
-
|
59
|
-
|
58
|
+
unless app.config.action_dispatch.domain_extractor.nil?
|
59
|
+
ActionDispatch::Http::URL.domain_extractor = app.config.action_dispatch.domain_extractor
|
60
|
+
end
|
61
|
+
|
62
|
+
unless app.config.action_dispatch.ignore_leading_brackets.nil?
|
63
|
+
ActionDispatch::ParamBuilder.ignore_leading_brackets = app.config.action_dispatch.ignore_leading_brackets
|
64
|
+
end
|
65
|
+
unless app.config.action_dispatch.strict_query_string_separator.nil?
|
66
|
+
ActionDispatch::QueryParser.strict_query_string_separator = app.config.action_dispatch.strict_query_string_separator
|
67
|
+
end
|
60
68
|
|
61
69
|
ActiveSupport.on_load(:action_dispatch_request) do
|
62
70
|
self.ignore_accept_header = app.config.action_dispatch.ignore_accept_header
|
@@ -89,7 +89,10 @@ module ActionDispatch
|
|
89
89
|
|
90
90
|
@engines.each do |name, engine_routes|
|
91
91
|
formatter.section_title "Routes for #{name}"
|
92
|
-
|
92
|
+
if engine_routes.any?
|
93
|
+
formatter.header engine_routes
|
94
|
+
formatter.section engine_routes
|
95
|
+
end
|
93
96
|
end
|
94
97
|
|
95
98
|
formatter.result
|