actionpack 7.1.6 → 7.2.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.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -652
  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 +12 -13
  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 +155 -117
  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 +119 -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 +69 -62
  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 +214 -203
  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 +114 -109
  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 +483 -478
  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 +58 -57
  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 +5 -1
  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 +48 -59
  69. data/lib/action_dispatch/http/filter_parameters.rb +13 -14
  70. data/lib/action_dispatch/http/filter_redirect.rb +15 -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 +25 -21
  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 +26 -36
  77. data/lib/action_dispatch/http/rack_cache.rb +2 -0
  78. data/lib/action_dispatch/http/request.rb +75 -95
  79. data/lib/action_dispatch/http/response.rb +61 -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 +2 -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 +16 -16
  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/routes/_table.html.erb +1 -1
  125. data/lib/action_dispatch/railtie.rb +2 -3
  126. data/lib/action_dispatch/request/session.rb +23 -21
  127. data/lib/action_dispatch/request/utils.rb +2 -0
  128. data/lib/action_dispatch/routing/endpoint.rb +2 -0
  129. data/lib/action_dispatch/routing/inspector.rb +6 -4
  130. data/lib/action_dispatch/routing/mapper.rb +623 -625
  131. data/lib/action_dispatch/routing/polymorphic_routes.rb +69 -62
  132. data/lib/action_dispatch/routing/redirection.rb +37 -32
  133. data/lib/action_dispatch/routing/route_set.rb +60 -46
  134. data/lib/action_dispatch/routing/routes_proxy.rb +6 -4
  135. data/lib/action_dispatch/routing/url_for.rb +130 -125
  136. data/lib/action_dispatch/routing.rb +150 -148
  137. data/lib/action_dispatch/system_test_case.rb +91 -81
  138. data/lib/action_dispatch/system_testing/browser.rb +4 -2
  139. data/lib/action_dispatch/system_testing/driver.rb +2 -0
  140. data/lib/action_dispatch/system_testing/server.rb +2 -0
  141. data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +32 -21
  142. data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +2 -0
  143. data/lib/action_dispatch/testing/assertion_response.rb +8 -6
  144. data/lib/action_dispatch/testing/assertions/response.rb +26 -23
  145. data/lib/action_dispatch/testing/assertions/routing.rb +153 -84
  146. data/lib/action_dispatch/testing/assertions.rb +2 -0
  147. data/lib/action_dispatch/testing/integration.rb +223 -222
  148. data/lib/action_dispatch/testing/request_encoder.rb +2 -0
  149. data/lib/action_dispatch/testing/test_helpers/page_dump_helper.rb +35 -0
  150. data/lib/action_dispatch/testing/test_process.rb +12 -8
  151. data/lib/action_dispatch/testing/test_request.rb +3 -1
  152. data/lib/action_dispatch/testing/test_response.rb +27 -26
  153. data/lib/action_dispatch.rb +22 -32
  154. data/lib/action_pack/gem_version.rb +6 -4
  155. data/lib/action_pack/version.rb +3 -1
  156. data/lib/action_pack.rb +17 -16
  157. metadata +33 -27
@@ -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,60 +3,50 @@
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"
29
30
 
30
31
  require "action_pack"
31
32
  require "rack"
32
- require "uri"
33
33
  require "action_dispatch/deprecator"
34
34
 
35
35
  module Rack # :nodoc:
36
36
  autoload :Test, "rack/test"
37
37
  end
38
38
 
39
- # = Action Dispatch
39
+ # # Action Dispatch
40
40
  #
41
41
  # Action Dispatch is a module of Action Pack.
42
42
  #
43
- # Action Dispatch parses information about the web request, handles
44
- # routing as defined by the user, and does advanced processing related to HTTP
45
- # such as MIME-type negotiation, decoding parameters in POST, PATCH, or PUT
46
- # 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.
47
47
  module ActionDispatch
48
- include ActiveSupport::Deprecation::DeprecatedConstantAccessor
49
48
  extend ActiveSupport::Autoload
50
49
 
51
- class DeprecatedIllegalStateError < StandardError
52
- end
53
- deprecate_constant "IllegalStateError", "ActionDispatch::DeprecatedIllegalStateError",
54
- message: "ActionDispatch::IllegalStateError is deprecated without replacement.",
55
- deprecator: ActionDispatch.deprecator
56
-
57
- RFC2396_PARSER = defined?(URI::RFC2396_PARSER) ? URI::RFC2396_PARSER : URI::RFC2396_Parser.new
58
- private_constant :RFC2396_PARSER
59
-
60
50
  class MissingController < NameError
61
51
  end
62
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 = 6
13
- PRE = nil
13
+ MINOR = 2
14
+ TINY = 0
15
+ PRE = "beta1"
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,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.6
4
+ version: 7.2.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2024-05-29 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: activesupport
@@ -15,28 +16,14 @@ dependencies:
15
16
  requirements:
16
17
  - - '='
17
18
  - !ruby/object:Gem::Version
18
- version: 7.1.6
19
+ version: 7.2.0.beta1
19
20
  type: :runtime
20
21
  prerelease: false
21
22
  version_requirements: !ruby/object:Gem::Requirement
22
23
  requirements:
23
24
  - - '='
24
25
  - !ruby/object:Gem::Version
25
- version: 7.1.6
26
- - !ruby/object:Gem::Dependency
27
- name: cgi
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0'
26
+ version: 7.2.0.beta1
40
27
  - !ruby/object:Gem::Dependency
41
28
  name: nokogiri
42
29
  requirement: !ruby/object:Gem::Requirement
@@ -135,34 +122,48 @@ dependencies:
135
122
  - - "~>"
136
123
  - !ruby/object:Gem::Version
137
124
  version: '2.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: useragent
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.16'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.16'
138
139
  - !ruby/object:Gem::Dependency
139
140
  name: actionview
140
141
  requirement: !ruby/object:Gem::Requirement
141
142
  requirements:
142
143
  - - '='
143
144
  - !ruby/object:Gem::Version
144
- version: 7.1.6
145
+ version: 7.2.0.beta1
145
146
  type: :runtime
146
147
  prerelease: false
147
148
  version_requirements: !ruby/object:Gem::Requirement
148
149
  requirements:
149
150
  - - '='
150
151
  - !ruby/object:Gem::Version
151
- version: 7.1.6
152
+ version: 7.2.0.beta1
152
153
  - !ruby/object:Gem::Dependency
153
154
  name: activemodel
154
155
  requirement: !ruby/object:Gem::Requirement
155
156
  requirements:
156
157
  - - '='
157
158
  - !ruby/object:Gem::Version
158
- version: 7.1.6
159
+ version: 7.2.0.beta1
159
160
  type: :development
160
161
  prerelease: false
161
162
  version_requirements: !ruby/object:Gem::Requirement
162
163
  requirements:
163
164
  - - '='
164
165
  - !ruby/object:Gem::Version
165
- version: 7.1.6
166
+ version: 7.2.0.beta1
166
167
  description: Web apps on Rails. Simple, battle-tested conventions for building and
167
168
  testing MVC web applications. Works with any Rack-compatible server.
168
169
  email: david@loudthinking.com
@@ -197,6 +198,7 @@ files:
197
198
  - lib/action_controller/form_builder.rb
198
199
  - lib/action_controller/log_subscriber.rb
199
200
  - lib/action_controller/metal.rb
201
+ - lib/action_controller/metal/allow_browser.rb
200
202
  - lib/action_controller/metal/basic_implicit_render.rb
201
203
  - lib/action_controller/metal/conditional_get.rb
202
204
  - lib/action_controller/metal/content_security_policy.rb
@@ -218,6 +220,7 @@ files:
218
220
  - lib/action_controller/metal/parameter_encoding.rb
219
221
  - lib/action_controller/metal/params_wrapper.rb
220
222
  - lib/action_controller/metal/permissions_policy.rb
223
+ - lib/action_controller/metal/rate_limiting.rb
221
224
  - lib/action_controller/metal/redirecting.rb
222
225
  - lib/action_controller/metal/renderers.rb
223
226
  - lib/action_controller/metal/rendering.rb
@@ -348,6 +351,7 @@ files:
348
351
  - lib/action_dispatch/testing/assertions/routing.rb
349
352
  - lib/action_dispatch/testing/integration.rb
350
353
  - lib/action_dispatch/testing/request_encoder.rb
354
+ - lib/action_dispatch/testing/test_helpers/page_dump_helper.rb
351
355
  - lib/action_dispatch/testing/test_process.rb
352
356
  - lib/action_dispatch/testing/test_request.rb
353
357
  - lib/action_dispatch/testing/test_response.rb
@@ -359,11 +363,12 @@ licenses:
359
363
  - MIT
360
364
  metadata:
361
365
  bug_tracker_uri: https://github.com/rails/rails/issues
362
- changelog_uri: https://github.com/rails/rails/blob/v7.1.6/actionpack/CHANGELOG.md
363
- documentation_uri: https://api.rubyonrails.org/v7.1.6/
366
+ changelog_uri: https://github.com/rails/rails/blob/v7.2.0.beta1/actionpack/CHANGELOG.md
367
+ documentation_uri: https://api.rubyonrails.org/v7.2.0.beta1/
364
368
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
365
- source_code_uri: https://github.com/rails/rails/tree/v7.1.6/actionpack
369
+ source_code_uri: https://github.com/rails/rails/tree/v7.2.0.beta1/actionpack
366
370
  rubygems_mfa_required: 'true'
371
+ post_install_message:
367
372
  rdoc_options: []
368
373
  require_paths:
369
374
  - lib
@@ -371,7 +376,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
371
376
  requirements:
372
377
  - - ">="
373
378
  - !ruby/object:Gem::Version
374
- version: 2.7.0
379
+ version: 3.1.0
375
380
  required_rubygems_version: !ruby/object:Gem::Requirement
376
381
  requirements:
377
382
  - - ">="
@@ -379,7 +384,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
379
384
  version: '0'
380
385
  requirements:
381
386
  - none
382
- rubygems_version: 3.6.9
387
+ rubygems_version: 3.5.10
388
+ signing_key:
383
389
  specification_version: 4
384
390
  summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).
385
391
  test_files: []