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 "nokogiri"
4
6
 
5
7
  module ActionDispatch
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActionDispatch
4
+ module TestHelpers
5
+ module PageDumpHelper
6
+ class InvalidResponse < StandardError; end
7
+
8
+ # Saves the content of response body to a file and tries to open it in your browser.
9
+ # Launchy must be present in your Gemfile for the page to open automatically.
10
+ def save_and_open_page(path = html_dump_default_path)
11
+ save_page(path).tap { |s_path| open_file(s_path) }
12
+ end
13
+
14
+ private
15
+ def save_page(path = html_dump_default_path)
16
+ raise InvalidResponse.new("Response is a redirection!") if response.redirection?
17
+ path = Pathname.new(path)
18
+ path.dirname.mkpath
19
+ File.write(path, response.body)
20
+ path
21
+ end
22
+
23
+ def open_file(path)
24
+ require "launchy"
25
+ Launchy.open(path)
26
+ rescue LoadError
27
+ warn "File saved to #{path}.\nPlease install the launchy gem to open the file automatically."
28
+ end
29
+
30
+ def html_dump_default_path
31
+ Rails.root.join("tmp/html_dump", "#{method_name}_#{DateTime.current.to_i}.html").to_s
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,21 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/middleware/cookies"
4
6
  require "action_dispatch/middleware/flash"
5
7
 
6
8
  module ActionDispatch
7
9
  module TestProcess
8
10
  module FixtureFile
9
- # Shortcut for <tt>Rack::Test::UploadedFile.new(File.join(ActionDispatch::IntegrationTest.file_fixture_path, path), type)</tt>:
11
+ # Shortcut for
12
+ # `Rack::Test::UploadedFile.new(File.join(ActionDispatch::IntegrationTest.file_f
13
+ # ixture_path, path), type)`:
10
14
  #
11
- # post :change_avatar, params: { avatar: file_fixture_upload('david.png', 'image/png') }
15
+ # post :change_avatar, params: { avatar: file_fixture_upload('david.png', 'image/png') }
12
16
  #
13
- # Default fixture files location is <tt>test/fixtures/files</tt>.
17
+ # Default fixture files location is `test/fixtures/files`.
14
18
  #
15
- # To upload binary files on Windows, pass <tt>:binary</tt> as the last parameter.
16
- # This will not affect other platforms:
19
+ # To upload binary files on Windows, pass `:binary` as the last parameter. This
20
+ # will not affect other platforms:
17
21
  #
18
- # post :change_avatar, params: { avatar: file_fixture_upload('david.png', 'image/png', :binary) }
22
+ # post :change_avatar, params: { avatar: file_fixture_upload('david.png', 'image/png', :binary) }
19
23
  def file_fixture_upload(path, mime_type = nil, binary = false)
20
24
  if self.class.file_fixture_path && !File.exist?(path)
21
25
  path = file_fixture(path)
@@ -30,8 +34,8 @@ module ActionDispatch
30
34
 
31
35
  def assigns(key = nil)
32
36
  raise NoMethodError,
33
- "assigns has been extracted to a gem. To continue using it,
34
- add `gem 'rails-controller-testing'` to your Gemfile."
37
+ 'assigns has been extracted to a gem. To continue using it,
38
+ add `gem "rails-controller-testing"` to your Gemfile.'
35
39
  end
36
40
 
37
41
  def session
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "active_support/core_ext/hash/indifferent_access"
4
6
  require "rack/utils"
5
7
 
@@ -11,7 +13,7 @@ module ActionDispatch
11
13
  "HTTP_USER_AGENT" => "Rails Testing".b,
12
14
  )
13
15
 
14
- # Create a new test request with default +env+ values.
16
+ # Create a new test request with default `env` values.
15
17
  def self.create(env = {})
16
18
  env = Rails.application.env_config.merge(env) if defined?(Rails.application) && Rails.application
17
19
  env["rack.request.cookie_hash"] ||= {}.with_indifferent_access
@@ -1,12 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require "action_dispatch/testing/request_encoder"
4
6
 
5
7
  module ActionDispatch
6
- # Integration test methods such as Integration::RequestHelpers#get
7
- # and Integration::RequestHelpers#post return objects of class
8
- # TestResponse, which represent the HTTP response results of the requested
9
- # controller actions.
8
+ # Integration test methods such as Integration::RequestHelpers#get and
9
+ # Integration::RequestHelpers#post return objects of class TestResponse, which
10
+ # represent the HTTP response results of the requested controller actions.
10
11
  #
11
12
  # See Response for more information on controller response objects.
12
13
  class TestResponse < Response
@@ -17,35 +18,35 @@ module ActionDispatch
17
18
  # Returns a parsed body depending on the response MIME type. When a parser
18
19
  # corresponding to the MIME type is not found, it returns the raw body.
19
20
  #
20
- # ==== Examples
21
- # get "/posts"
22
- # response.content_type # => "text/html; charset=utf-8"
23
- # response.parsed_body.class # => Nokogiri::HTML5::Document
24
- # response.parsed_body.to_html # => "<!DOCTYPE html>\n<html>\n..."
21
+ # #### Examples
22
+ # get "/posts"
23
+ # response.content_type # => "text/html; charset=utf-8"
24
+ # response.parsed_body.class # => Nokogiri::HTML5::Document
25
+ # response.parsed_body.to_html # => "<!DOCTYPE html>\n<html>\n..."
25
26
  #
26
- # assert_pattern { response.parsed_body.at("main") => { content: "Hello, world" } }
27
+ # assert_pattern { response.parsed_body.at("main") => { content: "Hello, world" } }
27
28
  #
28
- # response.parsed_body.at("main") => {name:, content:}
29
- # assert_equal "main", name
30
- # assert_equal "Some main content", content
29
+ # response.parsed_body.at("main") => {name:, content:}
30
+ # assert_equal "main", name
31
+ # assert_equal "Some main content", content
31
32
  #
32
- # get "/posts.json"
33
- # response.content_type # => "application/json; charset=utf-8"
34
- # response.parsed_body.class # => Array
35
- # response.parsed_body # => [{"id"=>42, "title"=>"Title"},...
33
+ # get "/posts.json"
34
+ # response.content_type # => "application/json; charset=utf-8"
35
+ # response.parsed_body.class # => Array
36
+ # response.parsed_body # => [{"id"=>42, "title"=>"Title"},...
36
37
  #
37
- # assert_pattern { response.parsed_body => [{ id: 42 }] }
38
+ # assert_pattern { response.parsed_body => [{ id: 42 }] }
38
39
  #
39
- # get "/posts/42.json"
40
- # response.content_type # => "application/json; charset=utf-8"
41
- # response.parsed_body.class # => ActiveSupport::HashWithIndifferentAccess
42
- # response.parsed_body # => {"id"=>42, "title"=>"Title"}
40
+ # get "/posts/42.json"
41
+ # response.content_type # => "application/json; charset=utf-8"
42
+ # response.parsed_body.class # => ActiveSupport::HashWithIndifferentAccess
43
+ # response.parsed_body # => {"id"=>42, "title"=>"Title"}
43
44
  #
44
- # assert_pattern { response.parsed_body => [{ title: /title/i }] }
45
+ # assert_pattern { response.parsed_body => [{ title: /title/i }] }
45
46
  #
46
- # response.parsed_body => {id:, title:}
47
- # assert_equal 42, id
48
- # assert_equal "Title", title
47
+ # response.parsed_body => {id:, title:}
48
+ # assert_equal 42, id
49
+ # assert_equal "Title", title
49
50
  def parsed_body
50
51
  @parsed_body ||= response_parser.call(body)
51
52
  end
@@ -3,26 +3,27 @@
3
3
  #--
4
4
  # Copyright (c) David Heinemeier Hansson
5
5
  #
6
- # Permission is hereby granted, free of charge, to any person obtaining
7
- # a copy of this software and associated documentation files (the
8
- # "Software"), to deal in the Software without restriction, including
9
- # without limitation the rights to use, copy, modify, merge, publish,
10
- # distribute, sublicense, and/or sell copies of the Software, and to
11
- # permit persons to whom the Software is furnished to do so, subject to
12
- # the following conditions:
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
13
12
  #
14
- # The above copyright notice and this permission notice shall be
15
- # included in all copies or substantial portions of the Software.
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
16
15
  #
17
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
24
23
  #++
25
24
 
25
+ # :markup: markdown
26
+
26
27
  require "active_support"
27
28
  require "active_support/rails"
28
29
  require "active_support/core_ext/module/attribute_accessors"
@@ -35,24 +36,17 @@ module Rack # :nodoc:
35
36
  autoload :Test, "rack/test"
36
37
  end
37
38
 
38
- # = Action Dispatch
39
+ # # Action Dispatch
39
40
  #
40
41
  # Action Dispatch is a module of Action Pack.
41
42
  #
42
- # Action Dispatch parses information about the web request, handles
43
- # routing as defined by the user, and does advanced processing related to HTTP
44
- # such as MIME-type negotiation, decoding parameters in POST, PATCH, or PUT
45
- # bodies, handling HTTP caching logic, cookies and sessions.
43
+ # Action Dispatch parses information about the web request, handles routing as
44
+ # defined by the user, and does advanced processing related to HTTP such as
45
+ # MIME-type negotiation, decoding parameters in POST, PATCH, or PUT bodies,
46
+ # handling HTTP caching logic, cookies and sessions.
46
47
  module ActionDispatch
47
- include ActiveSupport::Deprecation::DeprecatedConstantAccessor
48
48
  extend ActiveSupport::Autoload
49
49
 
50
- class DeprecatedIllegalStateError < StandardError
51
- end
52
- deprecate_constant "IllegalStateError", "ActionDispatch::DeprecatedIllegalStateError",
53
- message: "ActionDispatch::IllegalStateError is deprecated without replacement.",
54
- deprecator: ActionDispatch.deprecator
55
-
56
50
  class MissingController < NameError
57
51
  end
58
52
 
@@ -1,16 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  module ActionPack
4
- # Returns the currently loaded version of Action Pack as a +Gem::Version+.
6
+ # Returns the currently loaded version of Action Pack as a `Gem::Version`.
5
7
  def self.gem_version
6
8
  Gem::Version.new VERSION::STRING
7
9
  end
8
10
 
9
11
  module VERSION
10
12
  MAJOR = 7
11
- MINOR = 1
12
- TINY = 3
13
- PRE = nil
13
+ MINOR = 2
14
+ TINY = 1
15
+ PRE = "1"
14
16
 
15
17
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
18
  end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # :markup: markdown
4
+
3
5
  require_relative "gem_version"
4
6
 
5
7
  module ActionPack
6
- # Returns the currently loaded version of Action Pack as a +Gem::Version+.
8
+ # Returns the currently loaded version of Action Pack as a `Gem::Version`.
7
9
  def self.version
8
10
  gem_version
9
11
  end
data/lib/action_pack.rb CHANGED
@@ -3,24 +3,25 @@
3
3
  #--
4
4
  # Copyright (c) David Heinemeier Hansson
5
5
  #
6
- # Permission is hereby granted, free of charge, to any person obtaining
7
- # a copy of this software and associated documentation files (the
8
- # "Software"), to deal in the Software without restriction, including
9
- # without limitation the rights to use, copy, modify, merge, publish,
10
- # distribute, sublicense, and/or sell copies of the Software, and to
11
- # permit persons to whom the Software is furnished to do so, subject to
12
- # the following conditions:
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
13
12
  #
14
- # The above copyright notice and this permission notice shall be
15
- # included in all copies or substantial portions of the Software.
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
16
15
  #
17
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
24
23
  #++
25
24
 
25
+ # :markup: markdown
26
+
26
27
  require "action_pack/version"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.3
4
+ version: 7.2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-16 00:00:00.000000000 Z
11
+ date: 2024-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 7.1.3
19
+ version: 7.2.1.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 7.1.3
26
+ version: 7.2.1.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +59,9 @@ dependencies:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.2.4
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '3.2'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +69,9 @@ dependencies:
66
69
  - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: 2.2.4
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.2'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rack-session
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -122,34 +128,48 @@ dependencies:
122
128
  - - "~>"
123
129
  - !ruby/object:Gem::Version
124
130
  version: '2.2'
131
+ - !ruby/object:Gem::Dependency
132
+ name: useragent
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.16'
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.16'
125
145
  - !ruby/object:Gem::Dependency
126
146
  name: actionview
127
147
  requirement: !ruby/object:Gem::Requirement
128
148
  requirements:
129
149
  - - '='
130
150
  - !ruby/object:Gem::Version
131
- version: 7.1.3
151
+ version: 7.2.1.1
132
152
  type: :runtime
133
153
  prerelease: false
134
154
  version_requirements: !ruby/object:Gem::Requirement
135
155
  requirements:
136
156
  - - '='
137
157
  - !ruby/object:Gem::Version
138
- version: 7.1.3
158
+ version: 7.2.1.1
139
159
  - !ruby/object:Gem::Dependency
140
160
  name: activemodel
141
161
  requirement: !ruby/object:Gem::Requirement
142
162
  requirements:
143
163
  - - '='
144
164
  - !ruby/object:Gem::Version
145
- version: 7.1.3
165
+ version: 7.2.1.1
146
166
  type: :development
147
167
  prerelease: false
148
168
  version_requirements: !ruby/object:Gem::Requirement
149
169
  requirements:
150
170
  - - '='
151
171
  - !ruby/object:Gem::Version
152
- version: 7.1.3
172
+ version: 7.2.1.1
153
173
  description: Web apps on Rails. Simple, battle-tested conventions for building and
154
174
  testing MVC web applications. Works with any Rack-compatible server.
155
175
  email: david@loudthinking.com
@@ -184,6 +204,7 @@ files:
184
204
  - lib/action_controller/form_builder.rb
185
205
  - lib/action_controller/log_subscriber.rb
186
206
  - lib/action_controller/metal.rb
207
+ - lib/action_controller/metal/allow_browser.rb
187
208
  - lib/action_controller/metal/basic_implicit_render.rb
188
209
  - lib/action_controller/metal/conditional_get.rb
189
210
  - lib/action_controller/metal/content_security_policy.rb
@@ -205,6 +226,7 @@ files:
205
226
  - lib/action_controller/metal/parameter_encoding.rb
206
227
  - lib/action_controller/metal/params_wrapper.rb
207
228
  - lib/action_controller/metal/permissions_policy.rb
229
+ - lib/action_controller/metal/rate_limiting.rb
208
230
  - lib/action_controller/metal/redirecting.rb
209
231
  - lib/action_controller/metal/renderers.rb
210
232
  - lib/action_controller/metal/rendering.rb
@@ -335,6 +357,7 @@ files:
335
357
  - lib/action_dispatch/testing/assertions/routing.rb
336
358
  - lib/action_dispatch/testing/integration.rb
337
359
  - lib/action_dispatch/testing/request_encoder.rb
360
+ - lib/action_dispatch/testing/test_helpers/page_dump_helper.rb
338
361
  - lib/action_dispatch/testing/test_process.rb
339
362
  - lib/action_dispatch/testing/test_request.rb
340
363
  - lib/action_dispatch/testing/test_response.rb
@@ -346,12 +369,12 @@ licenses:
346
369
  - MIT
347
370
  metadata:
348
371
  bug_tracker_uri: https://github.com/rails/rails/issues
349
- changelog_uri: https://github.com/rails/rails/blob/v7.1.3/actionpack/CHANGELOG.md
350
- documentation_uri: https://api.rubyonrails.org/v7.1.3/
372
+ changelog_uri: https://github.com/rails/rails/blob/v7.2.1.1/actionpack/CHANGELOG.md
373
+ documentation_uri: https://api.rubyonrails.org/v7.2.1.1/
351
374
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
352
- source_code_uri: https://github.com/rails/rails/tree/v7.1.3/actionpack
375
+ source_code_uri: https://github.com/rails/rails/tree/v7.2.1.1/actionpack
353
376
  rubygems_mfa_required: 'true'
354
- post_install_message:
377
+ post_install_message:
355
378
  rdoc_options: []
356
379
  require_paths:
357
380
  - lib
@@ -359,7 +382,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
359
382
  requirements:
360
383
  - - ">="
361
384
  - !ruby/object:Gem::Version
362
- version: 2.7.0
385
+ version: 3.1.0
363
386
  required_rubygems_version: !ruby/object:Gem::Requirement
364
387
  requirements:
365
388
  - - ">="
@@ -367,8 +390,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
367
390
  version: '0'
368
391
  requirements:
369
392
  - none
370
- rubygems_version: 3.4.18
371
- signing_key:
393
+ rubygems_version: 3.5.16
394
+ signing_key:
372
395
  specification_version: 4
373
396
  summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).
374
397
  test_files: []