actionpack 4.2.10 → 7.2.0.rc1
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 +5 -5
- data/CHANGELOG.md +86 -600
- data/MIT-LICENSE +1 -1
- data/README.rdoc +13 -14
- data/lib/abstract_controller/asset_paths.rb +5 -1
- data/lib/abstract_controller/base.rb +166 -136
- data/lib/abstract_controller/caching/fragments.rb +149 -0
- data/lib/abstract_controller/caching.rb +68 -0
- data/lib/abstract_controller/callbacks.rb +126 -57
- data/lib/abstract_controller/collector.rb +13 -15
- data/lib/abstract_controller/deprecator.rb +9 -0
- data/lib/abstract_controller/error.rb +8 -0
- data/lib/abstract_controller/helpers.rb +181 -132
- data/lib/abstract_controller/logger.rb +5 -1
- data/lib/abstract_controller/railties/routes_helpers.rb +10 -3
- data/lib/abstract_controller/rendering.rb +56 -56
- data/lib/abstract_controller/translation.rb +29 -15
- data/lib/abstract_controller/url_for.rb +15 -11
- data/lib/abstract_controller.rb +21 -5
- data/lib/action_controller/api/api_rendering.rb +18 -0
- data/lib/action_controller/api.rb +154 -0
- data/lib/action_controller/base.rb +219 -155
- data/lib/action_controller/caching.rb +28 -68
- data/lib/action_controller/deprecator.rb +9 -0
- data/lib/action_controller/form_builder.rb +55 -0
- data/lib/action_controller/log_subscriber.rb +35 -22
- data/lib/action_controller/metal/allow_browser.rb +119 -0
- data/lib/action_controller/metal/basic_implicit_render.rb +17 -0
- data/lib/action_controller/metal/conditional_get.rb +259 -122
- data/lib/action_controller/metal/content_security_policy.rb +86 -0
- data/lib/action_controller/metal/cookies.rb +9 -5
- data/lib/action_controller/metal/data_streaming.rb +87 -104
- data/lib/action_controller/metal/default_headers.rb +21 -0
- data/lib/action_controller/metal/etag_with_flash.rb +22 -0
- data/lib/action_controller/metal/etag_with_template_digest.rb +35 -26
- data/lib/action_controller/metal/exceptions.rb +71 -24
- data/lib/action_controller/metal/flash.rb +26 -19
- data/lib/action_controller/metal/head.rb +45 -36
- data/lib/action_controller/metal/helpers.rb +80 -64
- data/lib/action_controller/metal/http_authentication.rb +297 -244
- data/lib/action_controller/metal/implicit_render.rb +57 -9
- data/lib/action_controller/metal/instrumentation.rb +76 -64
- data/lib/action_controller/metal/live.rb +238 -176
- data/lib/action_controller/metal/logging.rb +22 -0
- data/lib/action_controller/metal/mime_responds.rb +177 -166
- data/lib/action_controller/metal/parameter_encoding.rb +84 -0
- data/lib/action_controller/metal/params_wrapper.rb +145 -118
- data/lib/action_controller/metal/permissions_policy.rb +38 -0
- data/lib/action_controller/metal/rate_limiting.rb +62 -0
- data/lib/action_controller/metal/redirecting.rb +203 -64
- data/lib/action_controller/metal/renderers.rb +108 -65
- data/lib/action_controller/metal/rendering.rb +216 -56
- data/lib/action_controller/metal/request_forgery_protection.rb +496 -163
- data/lib/action_controller/metal/rescue.rb +19 -21
- data/lib/action_controller/metal/streaming.rb +179 -138
- data/lib/action_controller/metal/strong_parameters.rb +1058 -382
- data/lib/action_controller/metal/testing.rb +11 -17
- data/lib/action_controller/metal/url_for.rb +37 -21
- data/lib/action_controller/metal.rb +236 -138
- data/lib/action_controller/railtie.rb +89 -11
- data/lib/action_controller/railties/helpers.rb +5 -1
- data/lib/action_controller/renderer.rb +161 -0
- data/lib/action_controller/template_assertions.rb +13 -0
- data/lib/action_controller/test_case.rb +425 -497
- data/lib/action_controller.rb +44 -22
- data/lib/action_dispatch/constants.rb +34 -0
- data/lib/action_dispatch/deprecator.rb +9 -0
- data/lib/action_dispatch/http/cache.rb +119 -63
- data/lib/action_dispatch/http/content_disposition.rb +47 -0
- data/lib/action_dispatch/http/content_security_policy.rb +364 -0
- data/lib/action_dispatch/http/filter_parameters.rb +36 -34
- data/lib/action_dispatch/http/filter_redirect.rb +24 -12
- data/lib/action_dispatch/http/headers.rb +66 -31
- data/lib/action_dispatch/http/mime_negotiation.rb +106 -75
- data/lib/action_dispatch/http/mime_type.rb +196 -136
- data/lib/action_dispatch/http/mime_types.rb +25 -7
- data/lib/action_dispatch/http/parameters.rb +97 -45
- data/lib/action_dispatch/http/permissions_policy.rb +187 -0
- data/lib/action_dispatch/http/rack_cache.rb +6 -0
- data/lib/action_dispatch/http/request.rb +299 -170
- data/lib/action_dispatch/http/response.rb +311 -160
- data/lib/action_dispatch/http/upload.rb +52 -23
- data/lib/action_dispatch/http/url.rb +201 -125
- data/lib/action_dispatch/journey/formatter.rb +110 -50
- data/lib/action_dispatch/journey/gtg/builder.rb +37 -50
- data/lib/action_dispatch/journey/gtg/simulator.rb +20 -17
- data/lib/action_dispatch/journey/gtg/transition_table.rb +96 -36
- data/lib/action_dispatch/journey/nfa/dot.rb +5 -14
- data/lib/action_dispatch/journey/nodes/node.rb +100 -20
- data/lib/action_dispatch/journey/parser.rb +19 -17
- data/lib/action_dispatch/journey/parser.y +4 -3
- data/lib/action_dispatch/journey/parser_extras.rb +14 -4
- data/lib/action_dispatch/journey/path/pattern.rb +79 -63
- data/lib/action_dispatch/journey/route.rb +108 -44
- data/lib/action_dispatch/journey/router/utils.rb +41 -29
- data/lib/action_dispatch/journey/router.rb +64 -57
- data/lib/action_dispatch/journey/routes.rb +23 -21
- data/lib/action_dispatch/journey/scanner.rb +28 -17
- data/lib/action_dispatch/journey/visitors.rb +100 -54
- 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/journey.rb +7 -5
- data/lib/action_dispatch/log_subscriber.rb +25 -0
- data/lib/action_dispatch/middleware/actionable_exceptions.rb +46 -0
- data/lib/action_dispatch/middleware/assume_ssl.rb +27 -0
- data/lib/action_dispatch/middleware/callbacks.rb +7 -6
- data/lib/action_dispatch/middleware/cookies.rb +471 -328
- data/lib/action_dispatch/middleware/debug_exceptions.rb +149 -66
- data/lib/action_dispatch/middleware/debug_locks.rb +129 -0
- data/lib/action_dispatch/middleware/debug_view.rb +73 -0
- data/lib/action_dispatch/middleware/exception_wrapper.rb +275 -73
- data/lib/action_dispatch/middleware/executor.rb +32 -0
- data/lib/action_dispatch/middleware/flash.rb +143 -101
- data/lib/action_dispatch/middleware/host_authorization.rb +171 -0
- data/lib/action_dispatch/middleware/public_exceptions.rb +36 -27
- data/lib/action_dispatch/middleware/reloader.rb +10 -92
- data/lib/action_dispatch/middleware/remote_ip.rb +133 -107
- data/lib/action_dispatch/middleware/request_id.rb +29 -15
- data/lib/action_dispatch/middleware/server_timing.rb +78 -0
- data/lib/action_dispatch/middleware/session/abstract_store.rb +49 -27
- data/lib/action_dispatch/middleware/session/cache_store.rb +33 -16
- data/lib/action_dispatch/middleware/session/cookie_store.rb +86 -80
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +15 -3
- data/lib/action_dispatch/middleware/show_exceptions.rb +66 -36
- data/lib/action_dispatch/middleware/ssl.rb +134 -36
- data/lib/action_dispatch/middleware/stack.rb +109 -44
- data/lib/action_dispatch/middleware/static.rb +159 -90
- data/lib/action_dispatch/middleware/templates/rescues/_actions.html.erb +13 -0
- data/lib/action_dispatch/middleware/templates/rescues/_actions.text.erb +0 -0
- data/lib/action_dispatch/middleware/templates/rescues/_message_and_suggestions.html.erb +22 -0
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +7 -24
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +1 -1
- data/lib/action_dispatch/middleware/templates/rescues/_source.html.erb +36 -0
- data/lib/action_dispatch/middleware/templates/rescues/_source.text.erb +8 -0
- data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +46 -36
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.html.erb +12 -0
- data/lib/action_dispatch/middleware/templates/rescues/blocked_host.text.erb +9 -0
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +26 -7
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +24 -0
- data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb +16 -0
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +139 -15
- data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.html.erb +23 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.text.erb +3 -0
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +6 -6
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +7 -7
- data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +9 -9
- data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +1 -1
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +4 -4
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +1 -1
- data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +7 -4
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +125 -93
- data/lib/action_dispatch/railtie.rb +44 -16
- data/lib/action_dispatch/request/session.rb +159 -69
- data/lib/action_dispatch/request/utils.rb +97 -23
- data/lib/action_dispatch/routing/endpoint.rb +11 -2
- data/lib/action_dispatch/routing/inspector.rb +195 -106
- data/lib/action_dispatch/routing/mapper.rb +1338 -955
- data/lib/action_dispatch/routing/polymorphic_routes.rb +234 -201
- data/lib/action_dispatch/routing/redirection.rb +78 -51
- data/lib/action_dispatch/routing/route_set.rb +460 -374
- data/lib/action_dispatch/routing/routes_proxy.rb +36 -12
- data/lib/action_dispatch/routing/url_for.rb +172 -124
- data/lib/action_dispatch/routing.rb +159 -158
- data/lib/action_dispatch/system_test_case.rb +206 -0
- data/lib/action_dispatch/system_testing/browser.rb +84 -0
- data/lib/action_dispatch/system_testing/driver.rb +85 -0
- data/lib/action_dispatch/system_testing/server.rb +33 -0
- data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +164 -0
- data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +23 -0
- data/lib/action_dispatch/testing/assertion_response.rb +48 -0
- data/lib/action_dispatch/testing/assertions/response.rb +71 -39
- data/lib/action_dispatch/testing/assertions/routing.rb +228 -103
- data/lib/action_dispatch/testing/assertions.rb +9 -6
- data/lib/action_dispatch/testing/integration.rb +486 -306
- data/lib/action_dispatch/testing/request_encoder.rb +60 -0
- data/lib/action_dispatch/testing/test_helpers/page_dump_helper.rb +35 -0
- data/lib/action_dispatch/testing/test_process.rb +35 -22
- data/lib/action_dispatch/testing/test_request.rb +29 -34
- data/lib/action_dispatch/testing/test_response.rb +48 -15
- data/lib/action_dispatch.rb +82 -40
- data/lib/action_pack/gem_version.rb +8 -4
- data/lib/action_pack/version.rb +6 -2
- data/lib/action_pack.rb +21 -18
- metadata +146 -56
- data/lib/action_controller/caching/fragments.rb +0 -103
- data/lib/action_controller/metal/force_ssl.rb +0 -97
- data/lib/action_controller/metal/hide_actions.rb +0 -40
- data/lib/action_controller/metal/rack_delegation.rb +0 -32
- data/lib/action_controller/middleware.rb +0 -39
- data/lib/action_controller/model_naming.rb +0 -12
- data/lib/action_dispatch/http/parameter_filter.rb +0 -72
- data/lib/action_dispatch/journey/backwards.rb +0 -5
- data/lib/action_dispatch/journey/nfa/builder.rb +0 -76
- data/lib/action_dispatch/journey/nfa/simulator.rb +0 -47
- data/lib/action_dispatch/journey/nfa/transition_table.rb +0 -163
- data/lib/action_dispatch/journey/router/strexp.rb +0 -27
- data/lib/action_dispatch/middleware/params_parser.rb +0 -60
- data/lib/action_dispatch/middleware/templates/rescues/_source.erb +0 -27
- data/lib/action_dispatch/testing/assertions/dom.rb +0 -3
- data/lib/action_dispatch/testing/assertions/selector.rb +0 -3
- data/lib/action_dispatch/testing/assertions/tag.rb +0 -3
@@ -1,22 +1,47 @@
|
|
1
1
|
<% content_for :style do %>
|
2
|
+
h2, p {
|
3
|
+
padding-left: 30px;
|
4
|
+
}
|
5
|
+
|
2
6
|
#route_table {
|
3
7
|
margin: 0;
|
4
8
|
border-collapse: collapse;
|
9
|
+
word-wrap:break-word;
|
10
|
+
table-layout: fixed;
|
11
|
+
width:100%;
|
5
12
|
}
|
6
13
|
|
7
14
|
#route_table thead tr {
|
8
15
|
border-bottom: 2px solid #ddd;
|
9
16
|
}
|
10
17
|
|
18
|
+
#route_table th {
|
19
|
+
padding-left: 30px;
|
20
|
+
text-align: left;
|
21
|
+
}
|
22
|
+
|
11
23
|
#route_table thead tr.bottom {
|
12
24
|
border-bottom: none;
|
13
25
|
}
|
14
26
|
|
15
27
|
#route_table thead tr.bottom th {
|
16
|
-
padding: 10px
|
28
|
+
padding: 10px 30px;
|
17
29
|
line-height: 15px;
|
18
30
|
}
|
19
31
|
|
32
|
+
#route_table #search_container {
|
33
|
+
padding: 7px 30px;
|
34
|
+
}
|
35
|
+
|
36
|
+
#route_table thead tr th input#search {
|
37
|
+
-webkit-appearance: textfield;
|
38
|
+
width:100%;
|
39
|
+
}
|
40
|
+
|
41
|
+
#route_table thead th.http-verb {
|
42
|
+
width: 10%;
|
43
|
+
}
|
44
|
+
|
20
45
|
#route_table tbody tr {
|
21
46
|
border-bottom: 1px solid #ddd;
|
22
47
|
}
|
@@ -41,34 +66,34 @@
|
|
41
66
|
padding: 4px 30px;
|
42
67
|
}
|
43
68
|
|
44
|
-
|
45
|
-
|
46
|
-
|
69
|
+
@media (prefers-color-scheme: dark) {
|
70
|
+
#route_table tbody tr:nth-child(odd) {
|
71
|
+
background: #282828;
|
72
|
+
}
|
73
|
+
|
74
|
+
#route_table tbody.exact_matches tr,
|
75
|
+
#route_table tbody.fuzzy_matches tr {
|
76
|
+
background: DarkSlateGrey;
|
77
|
+
}
|
47
78
|
}
|
48
79
|
<% end %>
|
49
80
|
|
50
|
-
<table id='route_table'
|
81
|
+
<table id='route_table'>
|
51
82
|
<thead>
|
52
83
|
<tr>
|
53
|
-
<th>Helper
|
54
|
-
|
55
|
-
<th>Path</th>
|
56
|
-
<th>Controller#Action</th>
|
57
|
-
</tr>
|
58
|
-
<tr class='bottom'>
|
59
|
-
<th><%# Helper %>
|
60
|
-
<%= link_to "Path", "#", 'data-route-helper' => '_path',
|
84
|
+
<th>Helper
|
85
|
+
(<%= link_to "Path", "#", 'data-route-helper' => '_path',
|
61
86
|
title: "Returns a relative path (without the http or domain)" %> /
|
62
87
|
<%= link_to "Url", "#", 'data-route-helper' => '_url',
|
63
|
-
title: "Returns an absolute
|
64
|
-
</th>
|
65
|
-
<th><%# HTTP Verb %>
|
66
|
-
</th>
|
67
|
-
<th><%# Path %>
|
68
|
-
<%= search_field(:path, nil, id: 'search', placeholder: "Path Match") %>
|
69
|
-
</th>
|
70
|
-
<th><%# Controller#action %>
|
88
|
+
title: "Returns an absolute URL (with the http and domain)" %>)
|
71
89
|
</th>
|
90
|
+
<th class="http-verb">HTTP Verb</th>
|
91
|
+
<th>Path</th>
|
92
|
+
<th>Controller#Action</th>
|
93
|
+
<th>Source Location</th>
|
94
|
+
</tr>
|
95
|
+
<tr>
|
96
|
+
<th colspan="5" id="search_container"><%= search_field(:query, nil, id: 'search', placeholder: "Search") %></th>
|
72
97
|
</tr>
|
73
98
|
</thead>
|
74
99
|
<tbody class='exact_matches' id='exact_matches'>
|
@@ -80,93 +105,96 @@
|
|
80
105
|
</tbody>
|
81
106
|
</table>
|
82
107
|
|
83
|
-
<script
|
84
|
-
//
|
85
|
-
|
86
|
-
if (!elems instanceof Array) { elems = [elems]; }
|
87
|
-
for (var i = 0, len = elems.length; i < len; i++) {
|
88
|
-
func(elems[i]);
|
89
|
-
}
|
90
|
-
}
|
91
|
-
|
92
|
-
// Sets innerHTML for an element
|
93
|
-
function setContent(elem, text) {
|
94
|
-
elem.innerHTML = text;
|
95
|
-
}
|
96
|
-
|
97
|
-
// Enables path search functionality
|
98
|
-
function setupMatchPaths() {
|
99
|
-
// Check if the user input (sanitized as a path) matches the regexp data attribute
|
100
|
-
function checkExactMatch(section, elem, value) {
|
101
|
-
var string = sanitizePath(value),
|
102
|
-
regexp = elem.getAttribute("data-regexp");
|
103
|
-
|
104
|
-
showMatch(string, regexp, section, elem);
|
105
|
-
}
|
106
|
-
|
107
|
-
// Check if the route path data attribute contains the user input
|
108
|
-
function checkFuzzyMatch(section, elem, value) {
|
109
|
-
var string = elem.getAttribute("data-route-path"),
|
110
|
-
regexp = value;
|
108
|
+
<script>
|
109
|
+
// support forEach iterator on NodeList
|
110
|
+
NodeList.prototype.forEach = Array.prototype.forEach;
|
111
111
|
|
112
|
-
|
112
|
+
// Enables query search functionality
|
113
|
+
function setupMatchingRoutes() {
|
114
|
+
// Check if there are any matched results in a section
|
115
|
+
function checkNoMatch(section, trElement) {
|
116
|
+
if (section.children.length <= 1) {
|
117
|
+
section.appendChild(trElement);
|
118
|
+
}
|
113
119
|
}
|
114
120
|
|
115
|
-
//
|
116
|
-
function
|
117
|
-
|
118
|
-
|
119
|
-
|
121
|
+
// get JSON from URL and invoke callback with result
|
122
|
+
function getJSON(url, success) {
|
123
|
+
var xhr = new XMLHttpRequest();
|
124
|
+
xhr.open('GET', url);
|
125
|
+
xhr.onload = function() {
|
126
|
+
if (this.status == 200)
|
127
|
+
success(JSON.parse(this.response));
|
128
|
+
};
|
129
|
+
xhr.send();
|
120
130
|
}
|
121
131
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
132
|
+
function delayedKeyup(input, callback) {
|
133
|
+
var timeout;
|
134
|
+
input.onkeyup = function(){
|
135
|
+
if (timeout) clearTimeout(timeout);
|
136
|
+
timeout = setTimeout(callback, 300);
|
126
137
|
}
|
127
138
|
}
|
128
139
|
|
129
|
-
//
|
130
|
-
function
|
131
|
-
|
132
|
-
return path.replace(/\#.*|\?.*/, '');
|
140
|
+
// remove params or fragments
|
141
|
+
function sanitizeQuery(query) {
|
142
|
+
return query.replace(/[#?].*/, '');
|
133
143
|
}
|
134
144
|
|
135
|
-
var
|
136
|
-
searchElem
|
137
|
-
|
138
|
-
|
145
|
+
var pathElements = document.querySelectorAll('#route_table [data-route-path]'),
|
146
|
+
searchElem = document.querySelector('#search'),
|
147
|
+
exactSection = document.querySelector('#exact_matches'),
|
148
|
+
fuzzySection = document.querySelector('#fuzzy_matches');
|
139
149
|
|
140
150
|
// Remove matches when no search value is present
|
141
151
|
searchElem.onblur = function(e) {
|
142
152
|
if (searchElem.value === "") {
|
143
|
-
|
144
|
-
|
153
|
+
exactSection.innerHTML = "";
|
154
|
+
fuzzySection.innerHTML = "";
|
145
155
|
}
|
146
156
|
}
|
147
157
|
|
158
|
+
function buildTr(string) {
|
159
|
+
var tr = document.createElement('tr');
|
160
|
+
var th = document.createElement('th');
|
161
|
+
th.setAttribute('colspan', 5);
|
162
|
+
tr.appendChild(th);
|
163
|
+
th.innerText = string;
|
164
|
+
return tr;
|
165
|
+
}
|
166
|
+
|
148
167
|
// On key press perform a search for matching paths
|
149
|
-
searchElem
|
150
|
-
var
|
151
|
-
defaultExactMatch =
|
152
|
-
defaultFuzzyMatch =
|
153
|
-
noExactMatch = '
|
154
|
-
noFuzzyMatch = '
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
168
|
+
delayedKeyup(searchElem, function() {
|
169
|
+
var query = sanitizeQuery(searchElem.value),
|
170
|
+
defaultExactMatch = buildTr("Routes matching '" + query + "':"),
|
171
|
+
defaultFuzzyMatch = buildTr("Routes containing '" + query + "':"),
|
172
|
+
noExactMatch = buildTr('No exact matches found'),
|
173
|
+
noFuzzyMatch = buildTr('No fuzzy matches found');
|
174
|
+
|
175
|
+
if (!query)
|
176
|
+
return searchElem.onblur();
|
177
|
+
|
178
|
+
getJSON('/rails/info/routes?query=' + query, function(matches){
|
179
|
+
// Clear out results section
|
180
|
+
exactSection.replaceChildren(defaultExactMatch);
|
181
|
+
fuzzySection.replaceChildren(defaultFuzzyMatch);
|
182
|
+
|
183
|
+
// Display exact matches and fuzzy matches
|
184
|
+
pathElements.forEach(function(elem) {
|
185
|
+
var elemPath = elem.getAttribute('data-route-path');
|
186
|
+
if (matches['exact'].indexOf(elemPath) != -1)
|
187
|
+
exactSection.appendChild(elem.parentNode.cloneNode(true));
|
188
|
+
|
189
|
+
if (matches['fuzzy'].indexOf(elemPath) != -1)
|
190
|
+
fuzzySection.appendChild(elem.parentNode.cloneNode(true));
|
191
|
+
})
|
192
|
+
|
193
|
+
// Display 'No Matches' message when no matches are found
|
194
|
+
checkNoMatch(exactSection, noExactMatch);
|
195
|
+
checkNoMatch(fuzzySection, noFuzzyMatch);
|
164
196
|
})
|
165
|
-
|
166
|
-
// Display 'No Matches' message when no matches are found
|
167
|
-
checkNoMatch(exactMatches, defaultExactMatch, noExactMatch);
|
168
|
-
checkNoMatch(fuzzyMatches, defaultFuzzyMatch, noFuzzyMatch);
|
169
|
-
}
|
197
|
+
})
|
170
198
|
}
|
171
199
|
|
172
200
|
// Enables functionality to toggle between `_path` and `_url` helper suffixes
|
@@ -174,19 +202,20 @@
|
|
174
202
|
|
175
203
|
// Sets content for each element
|
176
204
|
function setValOn(elems, val) {
|
177
|
-
|
178
|
-
|
205
|
+
elems.forEach(function(elem) {
|
206
|
+
elem.innerHTML = val;
|
179
207
|
});
|
180
208
|
}
|
181
209
|
|
182
210
|
// Sets onClick event for each element
|
183
211
|
function onClick(elems, func) {
|
184
|
-
|
212
|
+
elems.forEach(function(elem) {
|
185
213
|
elem.onclick = func;
|
186
214
|
});
|
187
215
|
}
|
188
216
|
|
189
217
|
var toggleLinks = document.querySelectorAll('#route_table [data-route-helper]');
|
218
|
+
|
190
219
|
onClick(toggleLinks, function(){
|
191
220
|
var helperTxt = this.getAttribute("data-route-helper"),
|
192
221
|
helperElems = document.querySelectorAll('[data-route-name] span.helper');
|
@@ -195,6 +224,9 @@
|
|
195
224
|
});
|
196
225
|
}
|
197
226
|
|
198
|
-
|
227
|
+
setupMatchingRoutes();
|
199
228
|
setupRouteToggleHelperLinks();
|
229
|
+
|
230
|
+
// Focus the search input after page has loaded
|
231
|
+
document.getElementById('search').focus();
|
200
232
|
</script>
|
@@ -1,37 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :markup: markdown
|
4
|
+
|
1
5
|
require "action_dispatch"
|
6
|
+
require "action_dispatch/log_subscriber"
|
7
|
+
require "active_support/messages/rotation_configuration"
|
2
8
|
|
3
9
|
module ActionDispatch
|
4
10
|
class Railtie < Rails::Railtie # :nodoc:
|
5
11
|
config.action_dispatch = ActiveSupport::OrderedOptions.new
|
6
12
|
config.action_dispatch.x_sendfile_header = nil
|
7
13
|
config.action_dispatch.ip_spoofing_check = true
|
8
|
-
config.action_dispatch.show_exceptions =
|
14
|
+
config.action_dispatch.show_exceptions = :all
|
9
15
|
config.action_dispatch.tld_length = 1
|
10
16
|
config.action_dispatch.ignore_accept_header = false
|
11
|
-
config.action_dispatch.rescue_templates = {
|
12
|
-
config.action_dispatch.rescue_responses = {
|
17
|
+
config.action_dispatch.rescue_templates = {}
|
18
|
+
config.action_dispatch.rescue_responses = {}
|
13
19
|
config.action_dispatch.default_charset = nil
|
14
20
|
config.action_dispatch.rack_cache = false
|
15
|
-
config.action_dispatch.http_auth_salt =
|
16
|
-
config.action_dispatch.signed_cookie_salt =
|
17
|
-
config.action_dispatch.encrypted_cookie_salt =
|
18
|
-
config.action_dispatch.encrypted_signed_cookie_salt =
|
21
|
+
config.action_dispatch.http_auth_salt = "http authentication"
|
22
|
+
config.action_dispatch.signed_cookie_salt = "signed cookie"
|
23
|
+
config.action_dispatch.encrypted_cookie_salt = "encrypted cookie"
|
24
|
+
config.action_dispatch.encrypted_signed_cookie_salt = "signed encrypted cookie"
|
25
|
+
config.action_dispatch.authenticated_encrypted_cookie_salt = "authenticated encrypted cookie"
|
26
|
+
config.action_dispatch.use_authenticated_cookie_encryption = false
|
27
|
+
config.action_dispatch.use_cookies_with_metadata = false
|
19
28
|
config.action_dispatch.perform_deep_munge = true
|
29
|
+
config.action_dispatch.request_id_header = ActionDispatch::Constants::X_REQUEST_ID
|
30
|
+
config.action_dispatch.log_rescued_responses = true
|
31
|
+
config.action_dispatch.debug_exception_log_level = :fatal
|
20
32
|
|
21
33
|
config.action_dispatch.default_headers = {
|
22
|
-
|
23
|
-
|
24
|
-
|
34
|
+
"X-Frame-Options" => "SAMEORIGIN",
|
35
|
+
"X-XSS-Protection" => "1; mode=block",
|
36
|
+
"X-Content-Type-Options" => "nosniff",
|
37
|
+
"X-Download-Options" => "noopen",
|
38
|
+
"X-Permitted-Cross-Domain-Policies" => "none",
|
39
|
+
"Referrer-Policy" => "strict-origin-when-cross-origin"
|
25
40
|
}
|
26
41
|
|
42
|
+
config.action_dispatch.cookies_rotations = ActiveSupport::Messages::RotationConfiguration.new
|
43
|
+
|
27
44
|
config.eager_load_namespaces << ActionDispatch
|
28
45
|
|
46
|
+
initializer "action_dispatch.deprecator", before: :load_environment_config do |app|
|
47
|
+
app.deprecators[:action_dispatch] = ActionDispatch.deprecator
|
48
|
+
end
|
49
|
+
|
29
50
|
initializer "action_dispatch.configure" do |app|
|
51
|
+
ActionDispatch::Http::URL.secure_protocol = app.config.force_ssl
|
30
52
|
ActionDispatch::Http::URL.tld_length = app.config.action_dispatch.tld_length
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
53
|
+
|
54
|
+
ActiveSupport.on_load(:action_dispatch_request) do
|
55
|
+
self.ignore_accept_header = app.config.action_dispatch.ignore_accept_header
|
56
|
+
ActionDispatch::Request::Utils.perform_deep_munge = app.config.action_dispatch.perform_deep_munge
|
57
|
+
end
|
58
|
+
|
59
|
+
ActiveSupport.on_load(:action_dispatch_response) do
|
60
|
+
self.default_charset = app.config.action_dispatch.default_charset || app.config.encoding
|
61
|
+
self.default_headers = app.config.action_dispatch.default_headers
|
62
|
+
end
|
35
63
|
|
36
64
|
ActionDispatch::ExceptionWrapper.rescue_responses.merge!(config.action_dispatch.rescue_responses)
|
37
65
|
ActionDispatch::ExceptionWrapper.rescue_templates.merge!(config.action_dispatch.rescue_templates)
|
@@ -39,9 +67,9 @@ module ActionDispatch
|
|
39
67
|
config.action_dispatch.always_write_cookie = Rails.env.development? if config.action_dispatch.always_write_cookie.nil?
|
40
68
|
ActionDispatch::Cookies::CookieJar.always_write_cookie = config.action_dispatch.always_write_cookie
|
41
69
|
|
42
|
-
ActionDispatch.
|
70
|
+
ActionDispatch::Routing::Mapper.route_source_locations = Rails.env.development?
|
43
71
|
|
44
|
-
ActionDispatch
|
72
|
+
ActionDispatch.test_app = app
|
45
73
|
end
|
46
74
|
end
|
47
75
|
end
|