actionpack 6.1.7 → 7.0.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +251 -406
  3. data/MIT-LICENSE +1 -0
  4. data/README.rdoc +2 -3
  5. data/lib/abstract_controller/asset_paths.rb +1 -1
  6. data/lib/abstract_controller/base.rb +13 -26
  7. data/lib/abstract_controller/caching/fragments.rb +2 -2
  8. data/lib/abstract_controller/caching.rb +1 -1
  9. data/lib/abstract_controller/callbacks.rb +21 -7
  10. data/lib/abstract_controller/collector.rb +2 -2
  11. data/lib/abstract_controller/error.rb +1 -1
  12. data/lib/abstract_controller/helpers.rb +4 -3
  13. data/lib/abstract_controller/logger.rb +1 -1
  14. data/lib/abstract_controller/railties/routes_helpers.rb +2 -0
  15. data/lib/abstract_controller/translation.rb +3 -2
  16. data/lib/abstract_controller/url_for.rb +4 -6
  17. data/lib/action_controller/api.rb +6 -6
  18. data/lib/action_controller/base.rb +5 -4
  19. data/lib/action_controller/form_builder.rb +2 -2
  20. data/lib/action_controller/log_subscriber.rb +4 -3
  21. data/lib/action_controller/metal/conditional_get.rb +39 -2
  22. data/lib/action_controller/metal/content_security_policy.rb +36 -2
  23. data/lib/action_controller/metal/cookies.rb +1 -1
  24. data/lib/action_controller/metal/data_streaming.rb +5 -13
  25. data/lib/action_controller/metal/exceptions.rb +19 -30
  26. data/lib/action_controller/metal/flash.rb +6 -2
  27. data/lib/action_controller/metal/helpers.rb +2 -2
  28. data/lib/action_controller/metal/http_authentication.rb +66 -39
  29. data/lib/action_controller/metal/instrumentation.rb +57 -52
  30. data/lib/action_controller/metal/live.rb +43 -2
  31. data/lib/action_controller/metal/mime_responds.rb +3 -3
  32. data/lib/action_controller/metal/params_wrapper.rb +20 -11
  33. data/lib/action_controller/metal/permissions_policy.rb +19 -28
  34. data/lib/action_controller/metal/redirecting.rb +89 -18
  35. data/lib/action_controller/metal/renderers.rb +10 -11
  36. data/lib/action_controller/metal/rendering.rb +8 -8
  37. data/lib/action_controller/metal/request_forgery_protection.rb +78 -29
  38. data/lib/action_controller/metal/rescue.rb +1 -1
  39. data/lib/action_controller/metal/streaming.rb +6 -8
  40. data/lib/action_controller/metal/strong_parameters.rb +100 -54
  41. data/lib/action_controller/metal/testing.rb +9 -2
  42. data/lib/action_controller/metal/url_for.rb +3 -3
  43. data/lib/action_controller/metal.rb +10 -13
  44. data/lib/action_controller/railtie.rb +49 -6
  45. data/lib/action_controller/renderer.rb +1 -1
  46. data/lib/action_controller/test_case.rb +28 -7
  47. data/lib/action_controller.rb +2 -5
  48. data/lib/action_dispatch/http/cache.rb +13 -6
  49. data/lib/action_dispatch/http/content_security_policy.rb +108 -35
  50. data/lib/action_dispatch/http/filter_parameters.rb +5 -0
  51. data/lib/action_dispatch/http/mime_negotiation.rb +15 -5
  52. data/lib/action_dispatch/http/mime_type.rb +9 -11
  53. data/lib/action_dispatch/http/parameters.rb +5 -5
  54. data/lib/action_dispatch/http/permissions_policy.rb +17 -1
  55. data/lib/action_dispatch/http/request.rb +12 -21
  56. data/lib/action_dispatch/http/response.rb +3 -16
  57. data/lib/action_dispatch/http/url.rb +11 -19
  58. data/lib/action_dispatch/journey/gtg/builder.rb +11 -12
  59. data/lib/action_dispatch/journey/gtg/simulator.rb +10 -4
  60. data/lib/action_dispatch/journey/gtg/transition_table.rb +77 -21
  61. data/lib/action_dispatch/journey/nodes/node.rb +70 -5
  62. data/lib/action_dispatch/journey/path/pattern.rb +22 -13
  63. data/lib/action_dispatch/journey/route.rb +6 -13
  64. data/lib/action_dispatch/journey/router/utils.rb +2 -2
  65. data/lib/action_dispatch/journey/router.rb +1 -1
  66. data/lib/action_dispatch/journey/routes.rb +3 -3
  67. data/lib/action_dispatch/journey/visualizer/fsm.js +49 -24
  68. data/lib/action_dispatch/journey/visualizer/index.html.erb +1 -1
  69. data/lib/action_dispatch/middleware/actionable_exceptions.rb +0 -1
  70. data/lib/action_dispatch/middleware/cookies.rb +14 -7
  71. data/lib/action_dispatch/middleware/debug_exceptions.rb +6 -4
  72. data/lib/action_dispatch/middleware/debug_locks.rb +3 -3
  73. data/lib/action_dispatch/middleware/exception_wrapper.rb +4 -0
  74. data/lib/action_dispatch/middleware/executor.rb +3 -0
  75. data/lib/action_dispatch/middleware/flash.rb +17 -18
  76. data/lib/action_dispatch/middleware/host_authorization.rb +1 -12
  77. data/lib/action_dispatch/middleware/remote_ip.rb +16 -4
  78. data/lib/action_dispatch/middleware/request_id.rb +1 -1
  79. data/lib/action_dispatch/middleware/server_timing.rb +76 -0
  80. data/lib/action_dispatch/middleware/session/abstract_store.rb +1 -1
  81. data/lib/action_dispatch/middleware/session/cookie_store.rb +9 -9
  82. data/lib/action_dispatch/middleware/show_exceptions.rb +7 -9
  83. data/lib/action_dispatch/middleware/stack.rb +27 -9
  84. data/lib/action_dispatch/middleware/static.rb +2 -6
  85. data/lib/action_dispatch/middleware/templates/rescues/_message_and_suggestions.html.erb +1 -1
  86. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +4 -11
  87. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +2 -2
  88. data/lib/action_dispatch/middleware/templates/rescues/blocked_host.html.erb +3 -2
  89. data/lib/action_dispatch/middleware/templates/rescues/blocked_host.text.erb +2 -0
  90. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +4 -4
  91. data/lib/action_dispatch/middleware/templates/rescues/invalid_statement.html.erb +3 -3
  92. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +28 -18
  93. data/lib/action_dispatch/middleware/templates/rescues/missing_exact_template.html.erb +3 -3
  94. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +3 -3
  95. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +3 -3
  96. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +3 -3
  97. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +3 -3
  98. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +5 -14
  99. data/lib/action_dispatch/railtie.rb +8 -2
  100. data/lib/action_dispatch/request/session.rb +43 -13
  101. data/lib/action_dispatch/routing/inspector.rb +1 -1
  102. data/lib/action_dispatch/routing/mapper.rb +59 -83
  103. data/lib/action_dispatch/routing/redirection.rb +5 -2
  104. data/lib/action_dispatch/routing/route_set.rb +17 -7
  105. data/lib/action_dispatch/routing/routes_proxy.rb +1 -1
  106. data/lib/action_dispatch/routing/url_for.rb +4 -5
  107. data/lib/action_dispatch/routing.rb +5 -6
  108. data/lib/action_dispatch/system_test_case.rb +5 -5
  109. data/lib/action_dispatch/system_testing/browser.rb +2 -12
  110. data/lib/action_dispatch/system_testing/driver.rb +35 -11
  111. data/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +11 -7
  112. data/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb +0 -8
  113. data/lib/action_dispatch/testing/assertions/routing.rb +3 -2
  114. data/lib/action_dispatch/testing/assertions.rb +2 -5
  115. data/lib/action_dispatch/testing/integration.rb +6 -8
  116. data/lib/action_dispatch/testing/test_process.rb +3 -29
  117. data/lib/action_dispatch/testing/test_response.rb +20 -2
  118. data/lib/action_dispatch.rb +1 -0
  119. data/lib/action_pack/gem_version.rb +4 -4
  120. data/lib/action_pack/version.rb +1 -1
  121. metadata +14 -13
@@ -15,8 +15,11 @@ module ActionDispatch
15
15
  #
16
16
  # The screenshot will be displayed in your console, if supported.
17
17
  #
18
+ # The default screenshots directory is +tmp/screenshots+ but you can set a different
19
+ # one with +Capybara.save_path+
20
+ #
18
21
  # You can set the +RAILS_SYSTEM_TESTING_SCREENSHOT_HTML+ environment variable to
19
- # save the HTML from the page that is being screenhoted so you can investigate the
22
+ # save the HTML from the page that is being screenshotted so you can investigate the
20
23
  # elements on the page at the time of the screenshot
21
24
  #
22
25
  # You can set the +RAILS_SYSTEM_TESTING_SCREENSHOT+ environment variable to
@@ -37,12 +40,9 @@ module ActionDispatch
37
40
  # Takes a screenshot of the current page in the browser if the test
38
41
  # failed.
39
42
  #
40
- # +take_failed_screenshot+ is included in <tt>application_system_test_case.rb</tt>
41
- # that is generated with the application. To take screenshots when a test
42
- # fails add +take_failed_screenshot+ to the teardown block before clearing
43
- # sessions.
43
+ # +take_failed_screenshot+ is called during system test teardown.
44
44
  def take_failed_screenshot
45
- take_screenshot if failed? && supports_screenshot?
45
+ take_screenshot if failed? && supports_screenshot? && Capybara::Session.instance_created?
46
46
  end
47
47
 
48
48
  private
@@ -76,7 +76,11 @@ module ActionDispatch
76
76
  end
77
77
 
78
78
  def absolute_path
79
- Rails.root.join("tmp/screenshots/#{image_name}")
79
+ Rails.root.join(screenshots_dir, image_name)
80
+ end
81
+
82
+ def screenshots_dir
83
+ Capybara.save_path.presence || "tmp/screenshots"
80
84
  end
81
85
 
82
86
  def absolute_image_path
@@ -4,14 +4,6 @@ module ActionDispatch
4
4
  module SystemTesting
5
5
  module TestHelpers
6
6
  module SetupAndTeardown # :nodoc:
7
- def host!(host)
8
- ActiveSupport::Deprecation.warn \
9
- "ActionDispatch::SystemTestCase#host! is deprecated with no replacement. " \
10
- "Set Capybara.app_host directly or rely on Capybara's default host."
11
-
12
- Capybara.app_host = host
13
- end
14
-
15
7
  def before_teardown
16
8
  take_failed_screenshot
17
9
  ensure
@@ -18,8 +18,8 @@ module ActionDispatch
18
18
  # match +path+. Basically, it asserts that \Rails recognizes the route given by +expected_options+.
19
19
  #
20
20
  # Pass a hash in the second argument (+path+) to specify the request method. This is useful for routes
21
- # requiring a specific HTTP method. The hash should contain a :path with the incoming request path
22
- # and a :method containing the required HTTP verb.
21
+ # requiring a specific HTTP method. The hash should contain a +:path+ with the incoming request path
22
+ # and a +:method+ containing the required HTTP verb.
23
23
  #
24
24
  # # Asserts that POSTing to /items will call the create action on ItemsController
25
25
  # assert_recognizes({controller: 'items', action: 'create'}, {path: 'items', method: :post})
@@ -187,6 +187,7 @@ module ActionDispatch
187
187
  super
188
188
  end
189
189
  end
190
+ ruby2_keywords(:method_missing)
190
191
 
191
192
  private
192
193
  # Recognizes the route for a given path.
@@ -1,14 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rails-dom-testing"
4
+ require "action_dispatch/testing/assertions/response"
5
+ require "action_dispatch/testing/assertions/routing"
4
6
 
5
7
  module ActionDispatch
6
8
  module Assertions
7
- autoload :ResponseAssertions, "action_dispatch/testing/assertions/response"
8
- autoload :RoutingAssertions, "action_dispatch/testing/assertions/routing"
9
-
10
- extend ActiveSupport::Concern
11
-
12
9
  include ResponseAssertions
13
10
  include RoutingAssertions
14
11
  include Rails::Dom::Testing::Assertions
@@ -8,7 +8,7 @@ require "minitest"
8
8
  require "action_dispatch/testing/request_encoder"
9
9
 
10
10
  module ActionDispatch
11
- module Integration #:nodoc:
11
+ module Integration # :nodoc:
12
12
  module RequestHelpers
13
13
  # Performs a GET request with the given parameters. See ActionDispatch::Integration::Session#process
14
14
  # for more details.
@@ -199,7 +199,7 @@ module ActionDispatch
199
199
  # merged into the Rack env hash.
200
200
  # - +env+: Additional env to pass, as a Hash. The headers will be
201
201
  # merged into the Rack env hash.
202
- # - +xhr+: Set to +true+ if you want to make and Ajax request.
202
+ # - +xhr+: Set to +true+ if you want to make an Ajax request.
203
203
  # Adds request headers characteristic of XMLHttpRequest e.g. HTTP_X_REQUESTED_WITH.
204
204
  # The headers will be merged into the Rack env hash.
205
205
  # - +as+: Used for encoding the request with different content type.
@@ -363,13 +363,11 @@ module ActionDispatch
363
363
  reset_html_document = "@html_document = nil"
364
364
  end
365
365
 
366
- definition = RUBY_VERSION >= "2.7" ? "..." : "*args"
367
-
368
366
  module_eval <<~RUBY, __FILE__, __LINE__ + 1
369
- def #{method}(#{definition})
367
+ def #{method}(...)
370
368
  #{reset_html_document}
371
369
 
372
- result = integration_session.#{method}(#{definition})
370
+ result = integration_session.#{method}(...)
373
371
  copy_session_variables!
374
372
  result
375
373
  end
@@ -404,7 +402,7 @@ module ActionDispatch
404
402
 
405
403
  # Copy the instance variables from the current session instance into the
406
404
  # test instance.
407
- def copy_session_variables! #:nodoc:
405
+ def copy_session_variables! # :nodoc:
408
406
  @controller = @integration_session.controller
409
407
  @response = @integration_session.response
410
408
  @request = @integration_session.request
@@ -433,7 +431,7 @@ module ActionDispatch
433
431
  super
434
432
  end
435
433
  end
436
- ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
434
+ ruby2_keywords(:method_missing)
437
435
  end
438
436
  end
439
437
 
@@ -8,42 +8,16 @@ module ActionDispatch
8
8
  module FixtureFile
9
9
  # Shortcut for <tt>Rack::Test::UploadedFile.new(File.join(ActionDispatch::IntegrationTest.file_fixture_path, path), type)</tt>:
10
10
  #
11
- # post :change_avatar, params: { avatar: fixture_file_upload('spongebob.png', 'image/png') }
11
+ # post :change_avatar, params: { avatar: fixture_file_upload('david.png', 'image/png') }
12
12
  #
13
13
  # Default fixture files location is <tt>test/fixtures/files</tt>.
14
14
  #
15
15
  # To upload binary files on Windows, pass <tt>:binary</tt> as the last parameter.
16
16
  # This will not affect other platforms:
17
17
  #
18
- # post :change_avatar, params: { avatar: fixture_file_upload('spongebob.png', 'image/png', :binary) }
18
+ # post :change_avatar, params: { avatar: fixture_file_upload('david.png', 'image/png', :binary) }
19
19
  def fixture_file_upload(path, mime_type = nil, binary = false)
20
- if self.class.respond_to?(:fixture_path) && self.class.fixture_path &&
21
- !File.exist?(path)
22
- original_path = path
23
- path = Pathname.new(self.class.fixture_path).join(path)
24
-
25
- if !self.class.file_fixture_path
26
- ActiveSupport::Deprecation.warn(<<~EOM)
27
- Passing a path to `fixture_file_upload` relative to `fixture_path` is deprecated.
28
- In Rails 7.0, the path needs to be relative to `file_fixture_path` which you
29
- haven't set yet. Set `file_fixture_path` to discard this warning.
30
- EOM
31
- elsif path.exist?
32
- non_deprecated_path = Pathname(File.absolute_path(path)).relative_path_from(Pathname(File.absolute_path(self.class.file_fixture_path)))
33
-
34
- if Pathname(original_path) != non_deprecated_path
35
- ActiveSupport::Deprecation.warn(<<~EOM)
36
- Passing a path to `fixture_file_upload` relative to `fixture_path` is deprecated.
37
- In Rails 7.0, the path needs to be relative to `file_fixture_path`.
38
-
39
- Please modify the call from
40
- `fixture_file_upload("#{original_path}")` to `fixture_file_upload("#{non_deprecated_path}")`.
41
- EOM
42
- end
43
- else
44
- path = file_fixture(original_path)
45
- end
46
- elsif self.class.file_fixture_path && !File.exist?(path)
20
+ if self.class.file_fixture_path && !File.exist?(path)
47
21
  path = file_fixture(path)
48
22
  end
49
23
 
@@ -3,8 +3,8 @@
3
3
  require "action_dispatch/testing/request_encoder"
4
4
 
5
5
  module ActionDispatch
6
- # Integration test methods such as ActionDispatch::Integration::Session#get
7
- # and ActionDispatch::Integration::Session#post return objects of class
6
+ # Integration test methods such as Integration::RequestHelpers#get
7
+ # and Integration::RequestHelpers#post return objects of class
8
8
  # TestResponse, which represent the HTTP response results of the requested
9
9
  # controller actions.
10
10
  #
@@ -14,6 +14,24 @@ module ActionDispatch
14
14
  new response.status, response.headers, response.body
15
15
  end
16
16
 
17
+ # Returns a parsed body depending on the response MIME type. When a parser
18
+ # corresponding to the MIME type is not found, it returns the raw body.
19
+ #
20
+ # ==== Examples
21
+ # get "/posts"
22
+ # response.content_type # => "text/html; charset=utf-8"
23
+ # response.parsed_body.class # => String
24
+ # response.parsed_body # => "<!DOCTYPE html>\n<html>\n..."
25
+ #
26
+ # get "/posts.json"
27
+ # response.content_type # => "application/json; charset=utf-8"
28
+ # response.parsed_body.class # => Array
29
+ # response.parsed_body # => [{"id"=>42, "title"=>"Title"},...
30
+ #
31
+ # get "/posts/42.json"
32
+ # response.content_type # => "application/json; charset=utf-8"
33
+ # response.parsed_body.class # => Hash
34
+ # response.parsed_body # => {"id"=>42, "title"=>"Title"}
17
35
  def parsed_body
18
36
  @parsed_body ||= response_parser.call(body)
19
37
  end
@@ -67,6 +67,7 @@ module ActionDispatch
67
67
  autoload :PublicExceptions
68
68
  autoload :Reloader
69
69
  autoload :RemoteIp
70
+ autoload :ServerTiming
70
71
  autoload :ShowExceptions
71
72
  autoload :SSL
72
73
  autoload :Static
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionPack
4
- # Returns the version of the currently loaded Action Pack as a <tt>Gem::Version</tt>
4
+ # Returns the currently loaded version of Action Pack as a <tt>Gem::Version</tt>.
5
5
  def self.gem_version
6
6
  Gem::Version.new VERSION::STRING
7
7
  end
8
8
 
9
9
  module VERSION
10
- MAJOR = 6
11
- MINOR = 1
12
- TINY = 7
10
+ MAJOR = 7
11
+ MINOR = 0
12
+ TINY = 4
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -3,7 +3,7 @@
3
3
  require_relative "gem_version"
4
4
 
5
5
  module ActionPack
6
- # Returns the version of the currently loaded ActionPack as a <tt>Gem::Version</tt>
6
+ # Returns the currently loaded version of Action Pack as a <tt>Gem::Version</tt>.
7
7
  def self.version
8
8
  gem_version
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.7
4
+ version: 7.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.7
19
+ version: 7.0.4
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: 6.1.7
26
+ version: 7.0.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '2.0'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 2.0.9
36
+ version: 2.2.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '2.0'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 2.0.9
46
+ version: 2.2.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rack-test
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -98,28 +98,28 @@ dependencies:
98
98
  requirements:
99
99
  - - '='
100
100
  - !ruby/object:Gem::Version
101
- version: 6.1.7
101
+ version: 7.0.4
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - '='
107
107
  - !ruby/object:Gem::Version
108
- version: 6.1.7
108
+ version: 7.0.4
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: activemodel
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - '='
114
114
  - !ruby/object:Gem::Version
115
- version: 6.1.7
115
+ version: 7.0.4
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - '='
121
121
  - !ruby/object:Gem::Version
122
- version: 6.1.7
122
+ version: 7.0.4
123
123
  description: Web apps on Rails. Simple, battle-tested conventions for building and
124
124
  testing MVC web applications. Works with any Rack-compatible server.
125
125
  email: david@loudthinking.com
@@ -238,6 +238,7 @@ files:
238
238
  - lib/action_dispatch/middleware/reloader.rb
239
239
  - lib/action_dispatch/middleware/remote_ip.rb
240
240
  - lib/action_dispatch/middleware/request_id.rb
241
+ - lib/action_dispatch/middleware/server_timing.rb
241
242
  - lib/action_dispatch/middleware/session/abstract_store.rb
242
243
  - lib/action_dispatch/middleware/session/cache_store.rb
243
244
  - lib/action_dispatch/middleware/session/cookie_store.rb
@@ -309,10 +310,10 @@ licenses:
309
310
  - MIT
310
311
  metadata:
311
312
  bug_tracker_uri: https://github.com/rails/rails/issues
312
- changelog_uri: https://github.com/rails/rails/blob/v6.1.7/actionpack/CHANGELOG.md
313
- documentation_uri: https://api.rubyonrails.org/v6.1.7/
313
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.4/actionpack/CHANGELOG.md
314
+ documentation_uri: https://api.rubyonrails.org/v7.0.4/
314
315
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
315
- source_code_uri: https://github.com/rails/rails/tree/v6.1.7/actionpack
316
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.4/actionpack
316
317
  rubygems_mfa_required: 'true'
317
318
  post_install_message:
318
319
  rdoc_options: []
@@ -322,7 +323,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
322
323
  requirements:
323
324
  - - ">="
324
325
  - !ruby/object:Gem::Version
325
- version: 2.5.0
326
+ version: 2.7.0
326
327
  required_rubygems_version: !ruby/object:Gem::Requirement
327
328
  requirements:
328
329
  - - ">="