actionpack 7.1.3 → 7.2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +82 -501
  3. data/lib/abstract_controller/asset_paths.rb +2 -0
  4. data/lib/abstract_controller/base.rb +102 -98
  5. data/lib/abstract_controller/caching/fragments.rb +50 -53
  6. data/lib/abstract_controller/caching.rb +2 -0
  7. data/lib/abstract_controller/callbacks.rb +66 -64
  8. data/lib/abstract_controller/collector.rb +6 -6
  9. data/lib/abstract_controller/deprecator.rb +2 -0
  10. data/lib/abstract_controller/error.rb +2 -0
  11. data/lib/abstract_controller/helpers.rb +70 -85
  12. data/lib/abstract_controller/logger.rb +2 -0
  13. data/lib/abstract_controller/railties/routes_helpers.rb +2 -0
  14. data/lib/abstract_controller/rendering.rb +13 -12
  15. data/lib/abstract_controller/translation.rb +15 -7
  16. data/lib/abstract_controller/url_for.rb +8 -6
  17. data/lib/abstract_controller.rb +2 -0
  18. data/lib/action_controller/api/api_rendering.rb +2 -0
  19. data/lib/action_controller/api.rb +74 -72
  20. data/lib/action_controller/base.rb +198 -126
  21. data/lib/action_controller/caching.rb +15 -12
  22. data/lib/action_controller/deprecator.rb +2 -0
  23. data/lib/action_controller/form_builder.rb +20 -17
  24. data/lib/action_controller/log_subscriber.rb +3 -1
  25. data/lib/action_controller/metal/allow_browser.rb +123 -0
  26. data/lib/action_controller/metal/basic_implicit_render.rb +2 -0
  27. data/lib/action_controller/metal/conditional_get.rb +188 -174
  28. data/lib/action_controller/metal/content_security_policy.rb +25 -24
  29. data/lib/action_controller/metal/cookies.rb +4 -2
  30. data/lib/action_controller/metal/data_streaming.rb +64 -55
  31. data/lib/action_controller/metal/default_headers.rb +5 -3
  32. data/lib/action_controller/metal/etag_with_flash.rb +3 -1
  33. data/lib/action_controller/metal/etag_with_template_digest.rb +17 -15
  34. data/lib/action_controller/metal/exceptions.rb +11 -9
  35. data/lib/action_controller/metal/flash.rb +12 -10
  36. data/lib/action_controller/metal/head.rb +12 -10
  37. data/lib/action_controller/metal/helpers.rb +63 -55
  38. data/lib/action_controller/metal/http_authentication.rb +210 -205
  39. data/lib/action_controller/metal/implicit_render.rb +17 -15
  40. data/lib/action_controller/metal/instrumentation.rb +15 -12
  41. data/lib/action_controller/metal/live.rb +113 -107
  42. data/lib/action_controller/metal/logging.rb +6 -4
  43. data/lib/action_controller/metal/mime_responds.rb +151 -142
  44. data/lib/action_controller/metal/parameter_encoding.rb +34 -32
  45. data/lib/action_controller/metal/params_wrapper.rb +57 -59
  46. data/lib/action_controller/metal/permissions_policy.rb +13 -12
  47. data/lib/action_controller/metal/rate_limiting.rb +62 -0
  48. data/lib/action_controller/metal/redirecting.rb +108 -82
  49. data/lib/action_controller/metal/renderers.rb +50 -49
  50. data/lib/action_controller/metal/rendering.rb +103 -75
  51. data/lib/action_controller/metal/request_forgery_protection.rb +162 -133
  52. data/lib/action_controller/metal/rescue.rb +11 -9
  53. data/lib/action_controller/metal/streaming.rb +138 -136
  54. data/lib/action_controller/metal/strong_parameters.rb +525 -480
  55. data/lib/action_controller/metal/testing.rb +2 -0
  56. data/lib/action_controller/metal/url_for.rb +17 -15
  57. data/lib/action_controller/metal.rb +86 -60
  58. data/lib/action_controller/railtie.rb +3 -0
  59. data/lib/action_controller/railties/helpers.rb +2 -0
  60. data/lib/action_controller/renderer.rb +42 -36
  61. data/lib/action_controller/template_assertions.rb +4 -2
  62. data/lib/action_controller/test_case.rb +146 -126
  63. data/lib/action_controller.rb +10 -3
  64. data/lib/action_dispatch/constants.rb +2 -0
  65. data/lib/action_dispatch/deprecator.rb +2 -0
  66. data/lib/action_dispatch/http/cache.rb +27 -26
  67. data/lib/action_dispatch/http/content_disposition.rb +2 -0
  68. data/lib/action_dispatch/http/content_security_policy.rb +44 -38
  69. data/lib/action_dispatch/http/filter_parameters.rb +18 -9
  70. data/lib/action_dispatch/http/filter_redirect.rb +22 -1
  71. data/lib/action_dispatch/http/headers.rb +22 -22
  72. data/lib/action_dispatch/http/mime_negotiation.rb +30 -41
  73. data/lib/action_dispatch/http/mime_type.rb +31 -24
  74. data/lib/action_dispatch/http/mime_types.rb +2 -0
  75. data/lib/action_dispatch/http/parameters.rb +11 -9
  76. data/lib/action_dispatch/http/permissions_policy.rb +20 -44
  77. data/lib/action_dispatch/http/rack_cache.rb +2 -0
  78. data/lib/action_dispatch/http/request.rb +94 -75
  79. data/lib/action_dispatch/http/response.rb +73 -61
  80. data/lib/action_dispatch/http/upload.rb +18 -16
  81. data/lib/action_dispatch/http/url.rb +75 -73
  82. data/lib/action_dispatch/journey/formatter.rb +13 -6
  83. data/lib/action_dispatch/journey/gtg/builder.rb +4 -3
  84. data/lib/action_dispatch/journey/gtg/simulator.rb +2 -0
  85. data/lib/action_dispatch/journey/gtg/transition_table.rb +10 -8
  86. data/lib/action_dispatch/journey/nfa/dot.rb +2 -0
  87. data/lib/action_dispatch/journey/nodes/node.rb +6 -5
  88. data/lib/action_dispatch/journey/parser.rb +4 -3
  89. data/lib/action_dispatch/journey/parser_extras.rb +2 -0
  90. data/lib/action_dispatch/journey/path/pattern.rb +4 -1
  91. data/lib/action_dispatch/journey/route.rb +9 -7
  92. data/lib/action_dispatch/journey/router/utils.rb +16 -15
  93. data/lib/action_dispatch/journey/router.rb +4 -2
  94. data/lib/action_dispatch/journey/routes.rb +4 -2
  95. data/lib/action_dispatch/journey/scanner.rb +4 -2
  96. data/lib/action_dispatch/journey/visitors.rb +2 -0
  97. data/lib/action_dispatch/journey.rb +2 -0
  98. data/lib/action_dispatch/log_subscriber.rb +2 -0
  99. data/lib/action_dispatch/middleware/actionable_exceptions.rb +2 -0
  100. data/lib/action_dispatch/middleware/assume_ssl.rb +8 -5
  101. data/lib/action_dispatch/middleware/callbacks.rb +3 -1
  102. data/lib/action_dispatch/middleware/cookies.rb +119 -104
  103. data/lib/action_dispatch/middleware/debug_exceptions.rb +13 -5
  104. data/lib/action_dispatch/middleware/debug_locks.rb +15 -13
  105. data/lib/action_dispatch/middleware/debug_view.rb +2 -0
  106. data/lib/action_dispatch/middleware/exception_wrapper.rb +6 -11
  107. data/lib/action_dispatch/middleware/executor.rb +8 -0
  108. data/lib/action_dispatch/middleware/flash.rb +63 -51
  109. data/lib/action_dispatch/middleware/host_authorization.rb +17 -15
  110. data/lib/action_dispatch/middleware/public_exceptions.rb +8 -6
  111. data/lib/action_dispatch/middleware/reloader.rb +5 -3
  112. data/lib/action_dispatch/middleware/remote_ip.rb +77 -72
  113. data/lib/action_dispatch/middleware/request_id.rb +14 -9
  114. data/lib/action_dispatch/middleware/server_timing.rb +4 -2
  115. data/lib/action_dispatch/middleware/session/abstract_store.rb +2 -0
  116. data/lib/action_dispatch/middleware/session/cache_store.rb +13 -8
  117. data/lib/action_dispatch/middleware/session/cookie_store.rb +27 -26
  118. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +7 -3
  119. data/lib/action_dispatch/middleware/show_exceptions.rb +31 -21
  120. data/lib/action_dispatch/middleware/ssl.rb +43 -40
  121. data/lib/action_dispatch/middleware/stack.rb +11 -10
  122. data/lib/action_dispatch/middleware/static.rb +33 -31
  123. data/lib/action_dispatch/middleware/templates/rescues/_source.html.erb +1 -1
  124. data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.html.erb +1 -1
  125. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +1 -1
  126. data/lib/action_dispatch/railtie.rb +2 -4
  127. data/lib/action_dispatch/request/session.rb +23 -21
  128. data/lib/action_dispatch/request/utils.rb +2 -0
  129. data/lib/action_dispatch/routing/endpoint.rb +2 -0
  130. data/lib/action_dispatch/routing/inspector.rb +5 -3
  131. data/lib/action_dispatch/routing/mapper.rb +671 -636
  132. data/lib/action_dispatch/routing/polymorphic_routes.rb +69 -62
  133. data/lib/action_dispatch/routing/redirection.rb +37 -32
  134. data/lib/action_dispatch/routing/route_set.rb +59 -45
  135. data/lib/action_dispatch/routing/routes_proxy.rb +6 -4
  136. data/lib/action_dispatch/routing/url_for.rb +130 -125
  137. data/lib/action_dispatch/routing.rb +150 -148
  138. data/lib/action_dispatch/system_test_case.rb +91 -81
  139. data/lib/action_dispatch/system_testing/browser.rb +10 -3
  140. data/lib/action_dispatch/system_testing/driver.rb +3 -1
  141. data/lib/action_dispatch/system_testing/server.rb +2 -0
  142. data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +32 -21
  143. data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +2 -0
  144. data/lib/action_dispatch/testing/assertion_response.rb +8 -6
  145. data/lib/action_dispatch/testing/assertions/response.rb +26 -23
  146. data/lib/action_dispatch/testing/assertions/routing.rb +153 -84
  147. data/lib/action_dispatch/testing/assertions.rb +2 -0
  148. data/lib/action_dispatch/testing/integration.rb +223 -222
  149. data/lib/action_dispatch/testing/request_encoder.rb +2 -0
  150. data/lib/action_dispatch/testing/test_helpers/page_dump_helper.rb +35 -0
  151. data/lib/action_dispatch/testing/test_process.rb +12 -8
  152. data/lib/action_dispatch/testing/test_request.rb +3 -1
  153. data/lib/action_dispatch/testing/test_response.rb +27 -26
  154. data/lib/action_dispatch.rb +22 -28
  155. data/lib/action_pack/gem_version.rb +6 -4
  156. data/lib/action_pack/version.rb +3 -1
  157. data/lib/action_pack.rb +17 -16
  158. metadata +39 -16
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/journey/gtg/transition_table"
4
6
 
5
7
  module ActionDispatch
@@ -66,9 +68,8 @@ module ActionDispatch
66
68
  when Nodes::Group
67
69
  true
68
70
  when Nodes::Star
69
- # the default star regex is /(.+)/ which is NOT nullable
70
- # but since different constraints can be provided we must
71
- # actually check if this is the case or not.
71
+ # the default star regex is /(.+)/ which is NOT nullable but since different
72
+ # constraints can be provided we must actually check if this is the case or not.
72
73
  node.regexp.match?("")
73
74
  when Nodes::Or
74
75
  node.children.any? { |c| nullable?(c) }
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "strscan"
4
6
 
5
7
  module ActionDispatch
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/journey/nfa/dot"
4
6
 
5
7
  module ActionDispatch
@@ -55,8 +57,8 @@ module ActionDispatch
55
57
 
56
58
  t.each { |s, previous_start|
57
59
  if previous_start.nil?
58
- # In the simple case of a "default" param regex do this fast-path
59
- # and add all next states.
60
+ # In the simple case of a "default" param regex do this fast-path and add all
61
+ # next states.
60
62
  if token_matches_default_component && states = @stdparam_states[s]
61
63
  states.each { |re, v| next_states << [v, nil].freeze if !v.nil? }
62
64
  end
@@ -67,10 +69,10 @@ module ActionDispatch
67
69
  end
68
70
  end
69
71
 
70
- # For regexes that aren't the "default" style, they may potentially
71
- # not be terminated by the first "token" [./?], so we need to continue
72
- # to attempt to match this regexp as well as any successful paths that
73
- # continue out of it. both paths could be valid.
72
+ # For regexes that aren't the "default" style, they may potentially not be
73
+ # terminated by the first "token" [./?], so we need to continue to attempt to
74
+ # match this regexp as well as any successful paths that continue out of it.
75
+ # both paths could be valid.
74
76
  if states = @regexp_states[s]
75
77
  slice_start = if previous_start.nil?
76
78
  start_index
@@ -86,8 +88,8 @@ module ActionDispatch
86
88
  next_states << [v, nil].freeze if !v.nil? && re.match?(curr_slice)
87
89
  }
88
90
 
89
- # and regardless, we must continue accepting tokens and retrying this regexp.
90
- # we need to remember where we started as well so we can take bigger slices.
91
+ # and regardless, we must continue accepting tokens and retrying this regexp. we
92
+ # need to remember where we started as well so we can take bigger slices.
91
93
  next_states << [s, slice_start].freeze
92
94
  end
93
95
  }
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  module Journey # :nodoc:
5
7
  module NFA # :nodoc:
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/journey/visitors"
4
6
 
5
7
  module ActionDispatch
@@ -21,9 +23,8 @@ module ActionDispatch
21
23
  end
22
24
 
23
25
  def requirements=(requirements)
24
- # inject any regexp requirements for `star` nodes so they can be
25
- # determined nullable, which requires knowing if the regex accepts an
26
- # empty string.
26
+ # inject any regexp requirements for `star` nodes so they can be determined
27
+ # nullable, which requires knowing if the regex accepts an empty string.
27
28
  (symbols + stars).each do |node|
28
29
  re = requirements[node.to_sym]
29
30
  node.regexp = re if re
@@ -51,8 +52,8 @@ module ActionDispatch
51
52
  stars << node
52
53
 
53
54
  if formatted != false
54
- # Add a constraint for wildcard route to make it non-greedy and
55
- # match the optional format part of the route by default.
55
+ # Add a constraint for wildcard route to make it non-greedy and match the
56
+ # optional format part of the route by default.
56
57
  wildcard_options[node.name.to_sym] ||= /.+?/m
57
58
  end
58
59
  end
@@ -1,8 +1,9 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.16
4
- # from Racc grammar file "".
5
- #
3
+ # This file is automatically generated by Racc 1.4.16 from
4
+ # Racc grammar file "".
5
+
6
+ # :markup: markdown
6
7
 
7
8
  require 'racc/parser.rb'
8
9
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/journey/scanner"
4
6
  require "action_dispatch/journey/nodes/node"
5
7
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  module Journey # :nodoc:
5
7
  module Path # :nodoc:
@@ -32,7 +34,8 @@ module ActionDispatch
32
34
  end
33
35
 
34
36
  def requirements_anchored?
35
- # each required param must not be surrounded by a literal, otherwise it isn't simple to chunk-match the url piecemeal
37
+ # each required param must not be surrounded by a literal, otherwise it isn't
38
+ # simple to chunk-match the url piecemeal
36
39
  terminals = ast.terminals
37
40
 
38
41
  terminals.each_with_index { |s, index|
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  # :stopdoc:
5
7
  module Journey
@@ -52,7 +54,7 @@ module ActionDispatch
52
54
 
53
55
  ##
54
56
  # +path+ is a path constraint.
55
- # +constraints+ is a hash of constraints to be applied to this route.
57
+ # `constraints` is a hash of constraints to be applied to this route.
56
58
  def initialize(name:, app: nil, path:, constraints: {}, required_defaults: [], defaults: {}, request_method_match: nil, precedence: 0, scope_options: {}, internal: false, source_location: nil)
57
59
  @name = name
58
60
  @app = app
@@ -82,14 +84,14 @@ module ActionDispatch
82
84
  nil
83
85
  end
84
86
 
85
- # Needed for `bin/rails routes`. Picks up succinctly defined requirements
86
- # for a route, for example route
87
+ # Needed for `bin/rails routes`. Picks up succinctly defined requirements for a
88
+ # route, for example route
87
89
  #
88
- # get 'photo/:id', :controller => 'photos', :action => 'show',
89
- # :id => /[A-Z]\d{5}/
90
+ # get 'photo/:id', :controller => 'photos', :action => 'show',
91
+ # :id => /[A-Z]\d{5}/
90
92
  #
91
- # will have {:controller=>"photos", :action=>"show", :id=>/[A-Z]\d{5}/}
92
- # as requirements.
93
+ # will have {:controller=>"photos", :action=>"show", :[id=>/](A-Z){5}/} as
94
+ # requirements.
93
95
  def requirements
94
96
  @defaults.merge(path.requirements).delete_if { |_, v|
95
97
  /.+?/m == v
@@ -1,19 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  module Journey # :nodoc:
5
7
  class Router # :nodoc:
6
8
  class Utils # :nodoc:
7
9
  # Normalizes URI path.
8
10
  #
9
- # Strips off trailing slash and ensures there is a leading slash.
10
- # Also converts downcase URL encoded string to uppercase.
11
+ # Strips off trailing slash and ensures there is a leading slash. Also converts
12
+ # downcase URL encoded string to uppercase.
11
13
  #
12
- # normalize_path("/foo") # => "/foo"
13
- # normalize_path("/foo/") # => "/foo"
14
- # normalize_path("foo") # => "/foo"
15
- # normalize_path("") # => "/"
16
- # normalize_path("/%ab") # => "/%AB"
14
+ # normalize_path("/foo") # => "/foo"
15
+ # normalize_path("/foo/") # => "/foo"
16
+ # normalize_path("foo") # => "/foo"
17
+ # normalize_path("") # => "/"
18
+ # normalize_path("/%ab") # => "/%AB"
17
19
  def self.normalize_path(path)
18
20
  path ||= ""
19
21
  encoding = path.encoding
@@ -28,8 +30,7 @@ module ActionDispatch
28
30
  path.force_encoding(encoding)
29
31
  end
30
32
 
31
- # URI path and fragment escaping
32
- # https://tools.ietf.org/html/rfc3986
33
+ # URI path and fragment escaping https://tools.ietf.org/html/rfc3986
33
34
  class UriEncoder # :nodoc:
34
35
  ENCODE = "%%%02X"
35
36
  US_ASCII = Encoding::US_ASCII
@@ -42,11 +43,11 @@ module ActionDispatch
42
43
  UNRESERVED = "#{ALPHA}#{DIGIT}\\-\\._~"
43
44
  SUB_DELIMS = "!\\$&'\\(\\)\\*\\+,;="
44
45
 
45
- ESCAPED = /%[a-zA-Z0-9]{2}/.freeze
46
+ ESCAPED = /%[a-zA-Z0-9]{2}/
46
47
 
47
- FRAGMENT = /[^#{UNRESERVED}#{SUB_DELIMS}:@\/?]/.freeze
48
- SEGMENT = /[^#{UNRESERVED}#{SUB_DELIMS}:@]/.freeze
49
- PATH = /[^#{UNRESERVED}#{SUB_DELIMS}:@\/]/.freeze
48
+ FRAGMENT = /[^#{UNRESERVED}#{SUB_DELIMS}:@\/?]/
49
+ SEGMENT = /[^#{UNRESERVED}#{SUB_DELIMS}:@]/
50
+ PATH = /[^#{UNRESERVED}#{SUB_DELIMS}:@\/]/
50
51
 
51
52
  def escape_fragment(fragment)
52
53
  escape(fragment, FRAGMENT)
@@ -93,8 +94,8 @@ module ActionDispatch
93
94
 
94
95
  # Replaces any escaped sequences with their unescaped representations.
95
96
  #
96
- # uri = "/topics?title=Ruby%20on%20Rails"
97
- # unescape_uri(uri) #=> "/topics?title=Ruby on Rails"
97
+ # uri = "/topics?title=Ruby%20on%20Rails"
98
+ # unescape_uri(uri) #=> "/topics?title=Ruby on Rails"
98
99
  def self.unescape_uri(uri)
99
100
  ENCODER.unescape_uri(uri)
100
101
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/journey/router/utils"
4
6
  require "action_dispatch/journey/routes"
5
7
  require "action_dispatch/journey/formatter"
@@ -22,8 +24,8 @@ module ActionDispatch
22
24
  end
23
25
 
24
26
  def eager_load!
25
- # Eagerly trigger the simulator's initialization so
26
- # it doesn't happen during a request cycle.
27
+ # Eagerly trigger the simulator's initialization so it doesn't happen during a
28
+ # request cycle.
27
29
  simulator
28
30
  nil
29
31
  end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  module Journey # :nodoc:
5
- # The Routing table. Contains all routes for a system. Routes can be
6
- # added to the table by calling Routes#add_route.
7
+ # The Routing table. Contains all routes for a system. Routes can be added to
8
+ # the table by calling Routes#add_route.
7
9
  class Routes # :nodoc:
8
10
  include Enumerable
9
11
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "strscan"
4
6
 
5
7
  module ActionDispatch
@@ -33,8 +35,8 @@ module ActionDispatch
33
35
  end
34
36
 
35
37
  private
36
- # takes advantage of String @- deduping capabilities in Ruby 2.5 upwards
37
- # see: https://bugs.ruby-lang.org/issues/13077
38
+ # takes advantage of String @- deduping capabilities in Ruby 2.5 upwards see:
39
+ # https://bugs.ruby-lang.org/issues/13077
38
40
  def dedup_scan(regex)
39
41
  r = @ss.scan(regex)
40
42
  r ? -r : nil
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  # :stopdoc:
5
7
  module Journey
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/journey/router"
4
6
  require "action_dispatch/journey/gtg/builder"
5
7
  require "action_dispatch/journey/gtg/simulator"
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
6
  class LogSubscriber < ActiveSupport::LogSubscriber
5
7
  def redirect(event)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "uri"
4
6
  require "active_support/actionable_error"
5
7
 
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
- # = Action Dispatch \AssumeSSL
6
+ # # Action Dispatch AssumeSSL
5
7
  #
6
- # When proxying through a load balancer that terminates SSL, the forwarded request will appear
7
- # as though it's HTTP instead of HTTPS to the application. This makes redirects and cookie
8
- # security target HTTP instead of HTTPS. This middleware makes the server assume that the
9
- # proxy already terminated SSL, and that the request really is HTTPS.
8
+ # When proxying through a load balancer that terminates SSL, the forwarded
9
+ # request will appear as though it's HTTP instead of HTTPS to the application.
10
+ # This makes redirects and cookie security target HTTP instead of HTTPS. This
11
+ # middleware makes the server assume that the proxy already terminated SSL, and
12
+ # that the request really is HTTPS.
10
13
  class AssumeSSL
11
14
  def initialize(app)
12
15
  @app = app
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionDispatch
4
- # = Action Dispatch \Callbacks
6
+ # # Action Dispatch Callbacks
5
7
  #
6
8
  # Provides callbacks to be executed before and after dispatching the request.
7
9
  class Callbacks