actionpack 8.0.0.rc1 → 8.0.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of actionpack might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +11 -0
 - data/lib/action_controller/metal/http_authentication.rb +1 -4
 - data/lib/action_controller/metal/strong_parameters.rb +3 -1
 - data/lib/action_dispatch/http/filter_parameters.rb +9 -4
 - data/lib/action_dispatch/http/filter_redirect.rb +9 -2
 - data/lib/action_dispatch/http/param_builder.rb +31 -8
 - data/lib/action_dispatch/http/query_parser.rb +24 -2
 - data/lib/action_dispatch/journey/scanner.rb +5 -1
 - data/lib/action_dispatch/railtie.rb +6 -0
 - data/lib/action_pack/gem_version.rb +1 -1
 - metadata +11 -11
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 76724412ee5fbe34b92080713c9e9fab617fe1a81c4400ba2ee252d55020a6e3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 14b34e7e8e188f66b7f7da1542301fa5856fb0b14cb6213282c07c30fffbd76f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d13e4c2bc63c93db23db2ab94786700542926ba9c200f611985dd524fe7cd11602bc592a9124c14d7f08e39bf7e95ed56fbebdadb6c8391d5712bbad47fb62bf
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8f90ce2cd483f2ac438680310306293ccf733b0052f064bfb265a74a65c81e8bab5a32d699914a6f5c713974367d3ae5756a11e0e88210f4198e0d195339ce9b
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,3 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## Rails 8.0.0.rc2 (October 30, 2024) ##
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            *   Fix routes with `::` in the path.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                *Rafael Mendonça França*
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            *   Maintain Rack 2 parameter parsing behaviour.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                *Matthew Draper*
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       1 
12 
     | 
    
         
             
            ## Rails 8.0.0.rc1 (October 19, 2024) ##
         
     | 
| 
       2 
13 
     | 
    
         | 
| 
       3 
14 
     | 
    
         
             
            *   Remove `Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality`.
         
     | 
| 
         @@ -513,14 +513,11 @@ module ActionController 
     | 
|
| 
       513 
513 
     | 
    
         
             
                    array_params.each { |param| (param[1] || +"").gsub! %r/^"|"$/, "" }
         
     | 
| 
       514 
514 
     | 
    
         
             
                  end
         
     | 
| 
       515 
515 
     | 
    
         | 
| 
       516 
     | 
    
         
            -
                  WHITESPACED_AUTHN_PAIR_DELIMITERS = /\s*#{AUTHN_PAIR_DELIMITERS}\s*/
         
     | 
| 
       517 
     | 
    
         
            -
                  private_constant :WHITESPACED_AUTHN_PAIR_DELIMITERS
         
     | 
| 
       518 
     | 
    
         
            -
             
     | 
| 
       519 
516 
     | 
    
         
             
                  # This method takes an authorization body and splits up the key-value pairs by
         
     | 
| 
       520 
517 
     | 
    
         
             
                  # the standardized `:`, `;`, or `\t` delimiters defined in
         
     | 
| 
       521 
518 
     | 
    
         
             
                  # `AUTHN_PAIR_DELIMITERS`.
         
     | 
| 
       522 
519 
     | 
    
         
             
                  def raw_params(auth)
         
     | 
| 
       523 
     | 
    
         
            -
                    _raw_params = auth.sub(TOKEN_REGEX, "").split( 
     | 
| 
      
 520 
     | 
    
         
            +
                    _raw_params = auth.sub(TOKEN_REGEX, "").split(AUTHN_PAIR_DELIMITERS).map(&:strip)
         
     | 
| 
       524 
521 
     | 
    
         
             
                    _raw_params.reject!(&:empty?)
         
     | 
| 
       525 
522 
     | 
    
         | 
| 
       526 
523 
     | 
    
         
             
                    if !_raw_params.first&.start_with?(TOKEN_KEY)
         
     | 
| 
         @@ -95,6 +95,8 @@ module ActionController 
     | 
|
| 
       95 
95 
     | 
    
         
             
              # *   `permit` to filter params for mass assignment.
         
     | 
| 
       96 
96 
     | 
    
         
             
              # *   `require` to require a parameter or raise an error.
         
     | 
| 
       97 
97 
     | 
    
         
             
              #
         
     | 
| 
      
 98 
     | 
    
         
            +
              # Examples:
         
     | 
| 
      
 99 
     | 
    
         
            +
              #
         
     | 
| 
       98 
100 
     | 
    
         
             
              #     params = ActionController::Parameters.new({
         
     | 
| 
       99 
101 
     | 
    
         
             
              #       person: {
         
     | 
| 
       100 
102 
     | 
    
         
             
              #         name: "Francesco",
         
     | 
| 
         @@ -109,7 +111,7 @@ module ActionController 
     | 
|
| 
       109 
111 
     | 
    
         
             
              #     Person.first.update!(permitted)
         
     | 
| 
       110 
112 
     | 
    
         
             
              #     # => #<Person id: 1, name: "Francesco", age: 22, role: "user">
         
     | 
| 
       111 
113 
     | 
    
         
             
              #
         
     | 
| 
       112 
     | 
    
         
            -
              #  
     | 
| 
      
 114 
     | 
    
         
            +
              # Parameters provides two options that control the top-level behavior of new
         
     | 
| 
       113 
115 
     | 
    
         
             
              # instances:
         
     | 
| 
       114 
116 
     | 
    
         
             
              #
         
     | 
| 
       115 
117 
     | 
    
         
             
              # *   `permit_all_parameters` - If it's `true`, all the parameters will be
         
     | 
| 
         @@ -68,12 +68,17 @@ module ActionDispatch 
     | 
|
| 
       68 
68 
     | 
    
         
             
                    ActiveSupport::ParameterFilter.new(filters)
         
     | 
| 
       69 
69 
     | 
    
         
             
                  end
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
                  KV_RE   = "[^&;=]+"
         
     | 
| 
       72 
     | 
    
         
            -
                  PAIR_RE = %r{(#{KV_RE})=(#{KV_RE})}
         
     | 
| 
       73 
71 
     | 
    
         
             
                  def filtered_query_string # :doc:
         
     | 
| 
       74 
     | 
    
         
            -
                    query_string. 
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
                    parts = query_string.split(/([&;])/)
         
     | 
| 
      
 73 
     | 
    
         
            +
                    filtered_parts = parts.map do |part|
         
     | 
| 
      
 74 
     | 
    
         
            +
                      if part.include?("=")
         
     | 
| 
      
 75 
     | 
    
         
            +
                        key, value = part.split("=", 2)
         
     | 
| 
      
 76 
     | 
    
         
            +
                        parameter_filter.filter(key => value).first.join("=")
         
     | 
| 
      
 77 
     | 
    
         
            +
                      else
         
     | 
| 
      
 78 
     | 
    
         
            +
                        part
         
     | 
| 
      
 79 
     | 
    
         
            +
                      end
         
     | 
| 
       76 
80 
     | 
    
         
             
                    end
         
     | 
| 
      
 81 
     | 
    
         
            +
                    filtered_parts.join("")
         
     | 
| 
       77 
82 
     | 
    
         
             
                  end
         
     | 
| 
       78 
83 
     | 
    
         
             
                end
         
     | 
| 
       79 
84 
     | 
    
         
             
              end
         
     | 
| 
         @@ -37,9 +37,16 @@ module ActionDispatch 
     | 
|
| 
       37 
37 
     | 
    
         
             
                  def parameter_filtered_location
         
     | 
| 
       38 
38 
     | 
    
         
             
                    uri = URI.parse(location)
         
     | 
| 
       39 
39 
     | 
    
         
             
                    unless uri.query.nil? || uri.query.empty?
         
     | 
| 
       40 
     | 
    
         
            -
                      uri.query. 
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
                      parts = uri.query.split(/([&;])/)
         
     | 
| 
      
 41 
     | 
    
         
            +
                      filtered_parts = parts.map do |part|
         
     | 
| 
      
 42 
     | 
    
         
            +
                        if part.include?("=")
         
     | 
| 
      
 43 
     | 
    
         
            +
                          key, value = part.split("=", 2)
         
     | 
| 
      
 44 
     | 
    
         
            +
                          request.parameter_filter.filter(key => value).first.join("=")
         
     | 
| 
      
 45 
     | 
    
         
            +
                        else
         
     | 
| 
      
 46 
     | 
    
         
            +
                          part
         
     | 
| 
      
 47 
     | 
    
         
            +
                        end
         
     | 
| 
       42 
48 
     | 
    
         
             
                      end
         
     | 
| 
      
 49 
     | 
    
         
            +
                      uri.query = filtered_parts.join("")
         
     | 
| 
       43 
50 
     | 
    
         
             
                    end
         
     | 
| 
       44 
51 
     | 
    
         
             
                    uri.to_s
         
     | 
| 
       45 
52 
     | 
    
         
             
                  rescue URI::Error
         
     | 
| 
         @@ -2,6 +2,10 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module ActionDispatch
         
     | 
| 
       4 
4 
     | 
    
         
             
              class ParamBuilder
         
     | 
| 
      
 5 
     | 
    
         
            +
                # --
         
     | 
| 
      
 6 
     | 
    
         
            +
                # This implementation is based on Rack::QueryParser,
         
     | 
| 
      
 7 
     | 
    
         
            +
                # Copyright (C) 2007-2021 Leah Neukirchen <http://leahneukirchen.org/infopage.html>
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       5 
9 
     | 
    
         
             
                def self.make_default(param_depth_limit)
         
     | 
| 
       6 
10 
     | 
    
         
             
                  new param_depth_limit
         
     | 
| 
       7 
11 
     | 
    
         
             
                end
         
     | 
| 
         @@ -12,6 +16,10 @@ module ActionDispatch 
     | 
|
| 
       12 
16 
     | 
    
         
             
                  @param_depth_limit = param_depth_limit
         
     | 
| 
       13 
17 
     | 
    
         
             
                end
         
     | 
| 
       14 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
                cattr_accessor :ignore_leading_brackets
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                LEADING_BRACKETS_COMPAT = defined?(::Rack::RELEASE) && ::Rack::RELEASE.to_s.start_with?("2.")
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       15 
23 
     | 
    
         
             
                cattr_accessor :default
         
     | 
| 
       16 
24 
     | 
    
         
             
                self.default = make_default(100)
         
     | 
| 
       17 
25 
     | 
    
         | 
| 
         @@ -61,15 +69,30 @@ module ActionDispatch 
     | 
|
| 
       61 
69 
     | 
    
         
             
                      # nil name, treat same as empty string (required by tests)
         
     | 
| 
       62 
70 
     | 
    
         
             
                      k = after = ""
         
     | 
| 
       63 
71 
     | 
    
         
             
                    elsif depth == 0
         
     | 
| 
       64 
     | 
    
         
            -
                       
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
                      if ignore_leading_brackets || (ignore_leading_brackets.nil? && LEADING_BRACKETS_COMPAT)
         
     | 
| 
      
 73 
     | 
    
         
            +
                        # Rack 2 compatible behavior, ignore leading brackets
         
     | 
| 
      
 74 
     | 
    
         
            +
                        if name =~ /\A[\[\]]*([^\[\]]+)\]*/
         
     | 
| 
      
 75 
     | 
    
         
            +
                          k = $1
         
     | 
| 
      
 76 
     | 
    
         
            +
                          after = $' || ""
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                          if !ignore_leading_brackets && (k != $& || !after.empty? && !after.start_with?("["))
         
     | 
| 
      
 79 
     | 
    
         
            +
                            ActionDispatch.deprecator.warn("Skipping over leading brackets in parameter name #{name.inspect} is deprecated and will parse differently in Rails 8.1 or Rack 3.0.")
         
     | 
| 
      
 80 
     | 
    
         
            +
                          end
         
     | 
| 
      
 81 
     | 
    
         
            +
                        else
         
     | 
| 
      
 82 
     | 
    
         
            +
                          k = name
         
     | 
| 
      
 83 
     | 
    
         
            +
                          after = ""
         
     | 
| 
      
 84 
     | 
    
         
            +
                        end
         
     | 
| 
       69 
85 
     | 
    
         
             
                      else
         
     | 
| 
       70 
     | 
    
         
            -
                        #  
     | 
| 
       71 
     | 
    
         
            -
                         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
                        # Start of parsing, don't treat [] or [ at start of string specially
         
     | 
| 
      
 87 
     | 
    
         
            +
                        if start = name.index("[", 1)
         
     | 
| 
      
 88 
     | 
    
         
            +
                          # Start of parameter nesting, use part before brackets as key
         
     | 
| 
      
 89 
     | 
    
         
            +
                          k = name[0, start]
         
     | 
| 
      
 90 
     | 
    
         
            +
                          after = name[start, name.length]
         
     | 
| 
      
 91 
     | 
    
         
            +
                        else
         
     | 
| 
      
 92 
     | 
    
         
            +
                          # Plain parameter with no nesting
         
     | 
| 
      
 93 
     | 
    
         
            +
                          k = name
         
     | 
| 
      
 94 
     | 
    
         
            +
                          after = ""
         
     | 
| 
      
 95 
     | 
    
         
            +
                        end
         
     | 
| 
       73 
96 
     | 
    
         
             
                      end
         
     | 
| 
       74 
97 
     | 
    
         
             
                    elsif name.start_with?("[]")
         
     | 
| 
       75 
98 
     | 
    
         
             
                      # Array nesting
         
     | 
| 
         @@ -1,11 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require "uri"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "rack"
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            module ActionDispatch
         
     | 
| 
       6 
7 
     | 
    
         
             
              class QueryParser
         
     | 
| 
       7 
8 
     | 
    
         
             
                DEFAULT_SEP = /& */n
         
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                COMPAT_SEP = /[&;] */n
         
     | 
| 
      
 10 
     | 
    
         
            +
                COMMON_SEP = { ";" => /; */n, ";," => /[;,] */n, "&" => /& */n, "&;" => /[&;] */n }
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                cattr_accessor :strict_query_string_separator
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                SEMICOLON_COMPAT = defined?(::Rack::QueryParser::DEFAULT_SEP) && ::Rack::QueryParser::DEFAULT_SEP.to_s.include?(";")
         
     | 
| 
       9 
15 
     | 
    
         | 
| 
       10 
16 
     | 
    
         
             
                #--
         
     | 
| 
       11 
17 
     | 
    
         
             
                # Note this departs from WHATWG's specified parsing algorithm by
         
     | 
| 
         @@ -14,7 +20,23 @@ module ActionDispatch 
     | 
|
| 
       14 
20 
     | 
    
         
             
                def self.each_pair(s, separator = nil)
         
     | 
| 
       15 
21 
     | 
    
         
             
                  return enum_for(:each_pair, s, separator) unless block_given?
         
     | 
| 
       16 
22 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                   
     | 
| 
      
 23 
     | 
    
         
            +
                  s ||= ""
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  splitter =
         
     | 
| 
      
 26 
     | 
    
         
            +
                    if separator
         
     | 
| 
      
 27 
     | 
    
         
            +
                      COMMON_SEP[separator] || /[#{separator}] */n
         
     | 
| 
      
 28 
     | 
    
         
            +
                    elsif strict_query_string_separator
         
     | 
| 
      
 29 
     | 
    
         
            +
                      DEFAULT_SEP
         
     | 
| 
      
 30 
     | 
    
         
            +
                    elsif SEMICOLON_COMPAT && s.include?(";")
         
     | 
| 
      
 31 
     | 
    
         
            +
                      if strict_query_string_separator.nil?
         
     | 
| 
      
 32 
     | 
    
         
            +
                        ActionDispatch.deprecator.warn("Using semicolon as a query string separator is deprecated and will not be supported in Rails 8.1 or Rack 3.0. Use `&` instead.")
         
     | 
| 
      
 33 
     | 
    
         
            +
                      end
         
     | 
| 
      
 34 
     | 
    
         
            +
                      COMPAT_SEP
         
     | 
| 
      
 35 
     | 
    
         
            +
                    else
         
     | 
| 
      
 36 
     | 
    
         
            +
                      DEFAULT_SEP
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  s.split(splitter).each do |part|
         
     | 
| 
       18 
40 
     | 
    
         
             
                    next if part.empty?
         
     | 
| 
       19 
41 
     | 
    
         | 
| 
       20 
42 
     | 
    
         
             
                    k, v = part.split("=", 2)
         
     | 
| 
         @@ -55,7 +55,7 @@ module ActionDispatch 
     | 
|
| 
       55 
55 
     | 
    
         
             
                    def scan
         
     | 
| 
       56 
56 
     | 
    
         
             
                      next_byte = @scanner.peek_byte
         
     | 
| 
       57 
57 
     | 
    
         
             
                      case
         
     | 
| 
       58 
     | 
    
         
            -
                      when (token = STATIC_TOKENS[next_byte])
         
     | 
| 
      
 58 
     | 
    
         
            +
                      when (token = STATIC_TOKENS[next_byte]) && (token != :SYMBOL || next_byte_is_not_a_token?)
         
     | 
| 
       59 
59 
     | 
    
         
             
                        @scanner.pos += 1
         
     | 
| 
       60 
60 
     | 
    
         
             
                        @length = @scanner.skip(/\w+/).to_i + 1 if token == :SYMBOL || token == :STAR
         
     | 
| 
       61 
61 
     | 
    
         
             
                        token
         
     | 
| 
         @@ -65,6 +65,10 @@ module ActionDispatch 
     | 
|
| 
       65 
65 
     | 
    
         
             
                        :LITERAL
         
     | 
| 
       66 
66 
     | 
    
         
             
                      end
         
     | 
| 
       67 
67 
     | 
    
         
             
                    end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                    def next_byte_is_not_a_token?
         
     | 
| 
      
 70 
     | 
    
         
            +
                      !STATIC_TOKENS[@scanner.string.getbyte(@scanner.pos + 1)]
         
     | 
| 
      
 71 
     | 
    
         
            +
                    end
         
     | 
| 
       68 
72 
     | 
    
         
             
                end
         
     | 
| 
       69 
73 
     | 
    
         
             
              end
         
     | 
| 
       70 
74 
     | 
    
         
             
            end
         
     | 
| 
         @@ -31,6 +31,9 @@ module ActionDispatch 
     | 
|
| 
       31 
31 
     | 
    
         
             
                config.action_dispatch.debug_exception_log_level = :fatal
         
     | 
| 
       32 
32 
     | 
    
         
             
                config.action_dispatch.strict_freshness = false
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                config.action_dispatch.ignore_leading_brackets = nil
         
     | 
| 
      
 35 
     | 
    
         
            +
                config.action_dispatch.strict_query_string_separator = nil
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       34 
37 
     | 
    
         
             
                config.action_dispatch.default_headers = {
         
     | 
| 
       35 
38 
     | 
    
         
             
                  "X-Frame-Options" => "SAMEORIGIN",
         
     | 
| 
       36 
39 
     | 
    
         
             
                  "X-XSS-Protection" => "1; mode=block",
         
     | 
| 
         @@ -52,6 +55,9 @@ module ActionDispatch 
     | 
|
| 
       52 
55 
     | 
    
         
             
                  ActionDispatch::Http::URL.secure_protocol = app.config.force_ssl
         
     | 
| 
       53 
56 
     | 
    
         
             
                  ActionDispatch::Http::URL.tld_length = app.config.action_dispatch.tld_length
         
     | 
| 
       54 
57 
     | 
    
         | 
| 
      
 58 
     | 
    
         
            +
                  ActionDispatch::ParamBuilder.ignore_leading_brackets = app.config.action_dispatch.ignore_leading_brackets
         
     | 
| 
      
 59 
     | 
    
         
            +
                  ActionDispatch::QueryParser.strict_query_string_separator = app.config.action_dispatch.strict_query_string_separator
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       55 
61 
     | 
    
         
             
                  ActiveSupport.on_load(:action_dispatch_request) do
         
     | 
| 
       56 
62 
     | 
    
         
             
                    self.ignore_accept_header = app.config.action_dispatch.ignore_accept_header
         
     | 
| 
       57 
63 
     | 
    
         
             
                    ActionDispatch::Request::Utils.perform_deep_munge = app.config.action_dispatch.perform_deep_munge
         
     | 
    
        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: 8.0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 8.0.0.rc2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - David Heinemeier Hansson
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024-10- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-10-30 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: 8.0.0. 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 8.0.0.rc2
         
     | 
| 
       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: 8.0.0. 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 8.0.0.rc2
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: nokogiri
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -128,28 +128,28 @@ dependencies: 
     | 
|
| 
       128 
128 
     | 
    
         
             
                requirements:
         
     | 
| 
       129 
129 
     | 
    
         
             
                - - '='
         
     | 
| 
       130 
130 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       131 
     | 
    
         
            -
                    version: 8.0.0. 
     | 
| 
      
 131 
     | 
    
         
            +
                    version: 8.0.0.rc2
         
     | 
| 
       132 
132 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       133 
133 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       134 
134 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       135 
135 
     | 
    
         
             
                requirements:
         
     | 
| 
       136 
136 
     | 
    
         
             
                - - '='
         
     | 
| 
       137 
137 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       138 
     | 
    
         
            -
                    version: 8.0.0. 
     | 
| 
      
 138 
     | 
    
         
            +
                    version: 8.0.0.rc2
         
     | 
| 
       139 
139 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       140 
140 
     | 
    
         
             
              name: activemodel
         
     | 
| 
       141 
141 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       142 
142 
     | 
    
         
             
                requirements:
         
     | 
| 
       143 
143 
     | 
    
         
             
                - - '='
         
     | 
| 
       144 
144 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       145 
     | 
    
         
            -
                    version: 8.0.0. 
     | 
| 
      
 145 
     | 
    
         
            +
                    version: 8.0.0.rc2
         
     | 
| 
       146 
146 
     | 
    
         
             
              type: :development
         
     | 
| 
       147 
147 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       148 
148 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       149 
149 
     | 
    
         
             
                requirements:
         
     | 
| 
       150 
150 
     | 
    
         
             
                - - '='
         
     | 
| 
       151 
151 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       152 
     | 
    
         
            -
                    version: 8.0.0. 
     | 
| 
      
 152 
     | 
    
         
            +
                    version: 8.0.0.rc2
         
     | 
| 
       153 
153 
     | 
    
         
             
            description: Web apps on Rails. Simple, battle-tested conventions for building and
         
     | 
| 
       154 
154 
     | 
    
         
             
              testing MVC web applications. Works with any Rack-compatible server.
         
     | 
| 
       155 
155 
     | 
    
         
             
            email: david@loudthinking.com
         
     | 
| 
         @@ -350,10 +350,10 @@ licenses: 
     | 
|
| 
       350 
350 
     | 
    
         
             
            - MIT
         
     | 
| 
       351 
351 
     | 
    
         
             
            metadata:
         
     | 
| 
       352 
352 
     | 
    
         
             
              bug_tracker_uri: https://github.com/rails/rails/issues
         
     | 
| 
       353 
     | 
    
         
            -
              changelog_uri: https://github.com/rails/rails/blob/v8.0.0. 
     | 
| 
       354 
     | 
    
         
            -
              documentation_uri: https://api.rubyonrails.org/v8.0.0. 
     | 
| 
      
 353 
     | 
    
         
            +
              changelog_uri: https://github.com/rails/rails/blob/v8.0.0.rc2/actionpack/CHANGELOG.md
         
     | 
| 
      
 354 
     | 
    
         
            +
              documentation_uri: https://api.rubyonrails.org/v8.0.0.rc2/
         
     | 
| 
       355 
355 
     | 
    
         
             
              mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
         
     | 
| 
       356 
     | 
    
         
            -
              source_code_uri: https://github.com/rails/rails/tree/v8.0.0. 
     | 
| 
      
 356 
     | 
    
         
            +
              source_code_uri: https://github.com/rails/rails/tree/v8.0.0.rc2/actionpack
         
     | 
| 
       357 
357 
     | 
    
         
             
              rubygems_mfa_required: 'true'
         
     | 
| 
       358 
358 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       359 
359 
     | 
    
         
             
            rdoc_options: []
         
     |