railties 8.0.4 → 8.1.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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +72 -237
 - data/lib/minitest/rails_plugin.rb +48 -12
 - data/lib/rails/application/bootstrap.rb +5 -0
 - data/lib/rails/application/configuration.rb +26 -0
 - data/lib/rails/application/default_middleware_stack.rb +1 -1
 - data/lib/rails/application/finisher.rb +2 -1
 - data/lib/rails/application/routes_reloader.rb +0 -1
 - data/lib/rails/application.rb +1 -3
 - data/lib/rails/command/base.rb +0 -2
 - data/lib/rails/command/environment_argument.rb +0 -1
 - data/lib/rails/command.rb +1 -1
 - data/lib/rails/commands/console/irb_console.rb +4 -4
 - data/lib/rails/commands/credentials/credentials_command.rb +25 -5
 - data/lib/rails/commands/encrypted/encrypted_command.rb +0 -1
 - data/lib/rails/engine.rb +0 -1
 - data/lib/rails/gem_version.rb +3 -3
 - data/lib/rails/generators/actions.rb +2 -3
 - data/lib/rails/generators/app_base.rb +37 -28
 - data/lib/rails/generators/database.rb +1 -1
 - data/lib/rails/generators/erb/authentication/authentication_generator.rb +2 -0
 - data/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +2 -2
 - data/lib/rails/generators/generated_attribute.rb +1 -1
 - data/lib/rails/generators/migration.rb +0 -1
 - data/lib/rails/generators/rails/app/app_generator.rb +12 -2
 - data/lib/rails/generators/rails/app/templates/Dockerfile.tt +14 -12
 - data/lib/rails/generators/rails/app/templates/Gemfile.tt +3 -0
 - data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +5 -0
 - data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +1 -0
 - data/lib/rails/generators/rails/app/templates/bin/bundler-audit.tt +5 -0
 - data/lib/rails/generators/rails/app/templates/bin/ci.tt +5 -0
 - data/lib/rails/generators/rails/app/templates/bin/rubocop.tt +1 -1
 - data/lib/rails/generators/rails/app/templates/bin/setup.tt +1 -0
 - data/lib/rails/generators/rails/app/templates/config/bundler-audit.yml.tt +5 -0
 - data/lib/rails/generators/rails/app/templates/config/ci.rb.tt +34 -0
 - data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +9 -1
 - data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +10 -2
 - data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +1 -1
 - data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +9 -1
 - data/lib/rails/generators/rails/app/templates/config/deploy.yml.tt +5 -5
 - data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +5 -0
 - data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +16 -4
 - data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +4 -0
 - data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_8_1.rb.tt +66 -0
 - data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +3 -2
 - data/lib/rails/generators/rails/app/templates/config/storage.yml.tt +0 -7
 - data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +0 -6
 - data/lib/rails/generators/rails/app/templates/github/ci.yml.tt +101 -19
 - data/lib/rails/generators/rails/app/templates/github/dependabot.yml +2 -2
 - data/lib/rails/generators/rails/app/templates/kamal-secrets.tt +3 -0
 - data/lib/rails/generators/rails/app/templates/public/400.html +1 -1
 - data/lib/rails/generators/rails/app/templates/public/404.html +2 -2
 - data/lib/rails/generators/rails/app/templates/public/422.html +1 -1
 - data/lib/rails/generators/rails/app/templates/public/500.html +2 -2
 - data/lib/rails/generators/rails/authentication/authentication_generator.rb +17 -6
 - data/lib/rails/generators/rails/authentication/templates/app/controllers/passwords_controller.rb.tt +6 -0
 - data/lib/rails/generators/rails/authentication/templates/app/controllers/sessions_controller.rb.tt +2 -2
 - data/lib/rails/generators/rails/authentication/templates/test/test_helpers/session_test_helper.rb.tt +15 -0
 - data/lib/rails/generators/rails/benchmark/USAGE +1 -1
 - data/lib/rails/generators/rails/benchmark/templates/benchmark.rb.tt +0 -2
 - data/lib/rails/generators/rails/devcontainer/devcontainer_generator.rb +1 -1
 - data/lib/rails/generators/rails/devcontainer/templates/devcontainer/Dockerfile.tt +4 -0
 - data/lib/rails/generators/rails/devcontainer/templates/devcontainer/compose.yaml.tt +2 -2
 - data/lib/rails/generators/rails/devcontainer/templates/devcontainer/devcontainer.json.tt +1 -1
 - data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +17 -5
 - data/lib/rails/generators/rails/master_key/master_key_generator.rb +0 -12
 - data/lib/rails/generators/rails/plugin/templates/github/ci.yml.tt +20 -9
 - data/lib/rails/generators/rails/plugin/templates/github/dependabot.yml +2 -2
 - data/lib/rails/generators/rails/script/USAGE +1 -1
 - data/lib/rails/generators/test_unit/authentication/authentication_generator.rb +3 -2
 - data/lib/rails/generators/test_unit/authentication/templates/test/controllers/passwords_controller_test.rb.tt +67 -0
 - data/lib/rails/generators/test_unit/authentication/templates/test/controllers/sessions_controller_test.rb +33 -0
 - data/lib/rails/generators/test_unit/authentication/templates/test/models/user_test.rb.tt +4 -3
 - data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +1 -1
 - data/lib/rails/generators/testing/behavior.rb +0 -3
 - data/lib/rails/generators.rb +3 -1
 - data/lib/rails/health_controller.rb +8 -2
 - data/lib/rails/info.rb +4 -5
 - data/lib/rails/info_controller.rb +2 -3
 - data/lib/rails/initializable.rb +63 -19
 - data/lib/rails/rack/silence_request.rb +5 -2
 - data/lib/rails/railtie/configurable.rb +0 -1
 - data/lib/rails/railtie.rb +0 -1
 - data/lib/rails/templates/rails/info/notes.html.erb +23 -0
 - data/lib/rails/templates/rails/mailers/email.html.erb +3 -2
 - data/lib/rails/templates/rails/welcome/index.html.erb +17 -1
 - data/lib/rails/test_unit/reporter.rb +5 -4
 - data/lib/rails/test_unit/runner.rb +8 -5
 - data/lib/rails.rb +9 -2
 - metadata +19 -15
 - data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_8_0.rb.tt +0 -30
 - data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +0 -15
 - data/lib/rails/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +0 -7
 - data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +0 -2
 - /data/lib/rails/generators/{test_unit → rails}/authentication/templates/test/mailers/previews/passwords_mailer_preview.rb.tt +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f96d0bd7304aebd3f5b4067354bd24c00ad034b34b03454275124bda2ef80371
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2d8e046700f53160f821f70ceb11f6cf8799fc9654ba8f4b73d283240d8f7259
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 031c43f3c487649f1d6a83622afd3d438aa437e259864372c685b5e720b8b636cecbf7bf083afb58219b20120059c85ebf9bdfdb756afdbd59e713d7443a6f98
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0d2eb2b9519a859362aa6eda717ba8b0a9ef54fa975824f76c295f84e1750d2c30a3d5b9b0983e075c8bf1b89a2d80c6c3b469952920bd5537ed728d4b140e62
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,294 +1,129 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ## Rails 8.0. 
     | 
| 
      
 1 
     | 
    
         
            +
            ## Rails 8.1.0.beta1 (September 04, 2025) ##
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            *    
     | 
| 
      
 3 
     | 
    
         
            +
            *   Add command `rails credentials:fetch PATH` to get the value of a credential from the credentials file.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
                ```bash
         
     | 
| 
      
 6 
     | 
    
         
            +
                $ bin/rails credentials:fetch kamal_registry.password
         
     | 
| 
      
 7 
     | 
    
         
            +
                ```
         
     | 
| 
       5 
8 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            *   Fix `polymorphic_url` and `polymorphic_path` not working when routes are not loaded.
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                *Édouard Chin*
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            *   Fix Rails console to not override user defined IRB_NAME.
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                Only change the prompt name if it hasn't been customized in `.irbrc`.
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                *Jarrett Lusso*
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            ## Rails 8.0.2.1 (August 13, 2025) ##
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            *   No changes.
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            ## Rails 8.0.2 (March 12, 2025) ##
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            *   Fix Rails console to load routes.
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                Otherwise `*_path` and `*url` methods are missing on the `app` object.
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                *Édouard Chin*
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            *   Update `rails new --minimal` option
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                Extend the `--minimal` flag to exclude recently added features:
         
     | 
| 
       35 
     | 
    
         
            -
                `skip_brakeman`, `skip_ci`, `skip_docker`, `skip_kamal`, `skip_rubocop`, `skip_solid` and `skip_thruster`.
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                *eelcoj*
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            *   Use `secret_key_base` from ENV or credentials when present locally.
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                When ENV["SECRET_KEY_BASE"] or
         
     | 
| 
       42 
     | 
    
         
            -
                `Rails.application.credentials.secret_key_base` is set for test or
         
     | 
| 
       43 
     | 
    
         
            -
                development, it is used for the `Rails.config.secret_key_base`,
         
     | 
| 
       44 
     | 
    
         
            -
                instead of generating a `tmp/local_secret.txt` file.
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                *Petrik de Heus*
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
            ## Rails 8.0.1 (December 13, 2024) ##
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
            *   Skip generation system tests related code for CI when `--skip-system-test` is given.
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                *fatkodima*
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
            *   Don't add bin/thrust if thruster is not in Gemfile.
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                *Étienne Barrié*
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
            *   Don't install a package for system test when applications don't use it.
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                *y-yagi*
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
            ## Rails 8.0.0.1 (December 10, 2024) ##
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
            *   No changes.
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
            ## Rails 8.0.0 (November 07, 2024) ##
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            *   No changes.
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
            ## Rails 8.0.0.rc2 (October 30, 2024) ##
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
            *   Fix incorrect database.yml with `skip_solid`.
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                *Joé Dupuis*
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
            *   Set `Regexp.timeout` to `1`s by default to improve security over Regexp Denial-of-Service attacks.
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                *Rafael Mendonça França*
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
            ## Rails 8.0.0.rc1 (October 19, 2024) ##
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            *   Remove deprecated support to extend Rails console through `Rails::ConsoleMethods`.
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                *Rafael Mendonça França*
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
            *   Remove deprecated file `rails/console/helpers`.
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                *Rafael Mendonça França*
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            *   Remove deprecated file `rails/console/app`.
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                *Rafael Mendonça França*
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
            *   Remove deprecated `config.read_encrypted_secrets`.
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                *Rafael Mendonça França*
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
            *   Add Kamal support for devcontainers
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
                Previously generated devcontainer could not use docker and therefore Kamal.
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
                *Joé Dupuis*
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
            ## Rails 8.0.0.beta1 (September 26, 2024) ##
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
            *   Exit `rails g` with code 1 if generator could not be found.
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                Previously `rails g` returned 0, which would make it harder to catch typos in scripts calling `rails g`.
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
                *Christopher Özbek*
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
            *   Remove `require_*` statements from application.css to align with the transition from Sprockets to Propshaft.
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                With Propshaft as the default asset pipeline in Rails 8, the require_tree and require_self clauses in application.css are no longer necessary, as they were specific to Sprockets. Additionally, the comment has been updated to clarify that CSS precedence now follows standard cascading order without automatic prioritization by the asset pipeline.
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
                *Eduardo Alencar*
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
            *   Do not include redis by default in generated Dev Containers.
         
     | 
| 
      
 9 
     | 
    
         
            +
                *Matthew Nguyen*, *Jean Boussier*
         
     | 
| 
       125 
10 
     | 
    
         | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
                in the Dev Container. We will only include redis if `--skip-solid` is used when generating an app that uses
         
     | 
| 
       128 
     | 
    
         
            -
                Active Job or Action Cable.
         
     | 
| 
      
 11 
     | 
    
         
            +
            *   Generate static BCrypt password digests in fixtures instead of dynamic ERB expressions.
         
     | 
| 
       129 
12 
     | 
    
         | 
| 
       130 
     | 
    
         
            -
                 
     | 
| 
       131 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                Previously, fixtures with password digest attributes used `<%= BCrypt::Password.create("secret") %>`,
         
     | 
| 
      
 14 
     | 
    
         
            +
                which regenerated the hash on each test run. Now generates a static hash with a comment
         
     | 
| 
      
 15 
     | 
    
         
            +
                showing how to recreate it.
         
     | 
| 
       132 
16 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
                * 
     | 
| 
      
 17 
     | 
    
         
            +
                *Nate Smith*, *Cassia Scheffer*
         
     | 
| 
       134 
18 
     | 
    
         | 
| 
       135 
     | 
    
         
            -
            *    
     | 
| 
      
 19 
     | 
    
         
            +
            *   Broaden the `.gitignore` entry when adding a credentials key to ignore all key files.
         
     | 
| 
       136 
20 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
                * 
     | 
| 
      
 21 
     | 
    
         
            +
                *Greg Molnar*
         
     | 
| 
       138 
22 
     | 
    
         | 
| 
       139 
     | 
    
         
            -
            *    
     | 
| 
      
 23 
     | 
    
         
            +
            *   Remove unnecessary `ruby-version` input from `ruby/setup-ruby`
         
     | 
| 
       140 
24 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
                * 
     | 
| 
      
 25 
     | 
    
         
            +
                *TangRufus*
         
     | 
| 
       142 
26 
     | 
    
         | 
| 
       143 
     | 
    
         
            -
            *    
     | 
| 
      
 27 
     | 
    
         
            +
            *   Add --reset option to bin/setup which will call db:reset as part of the setup.
         
     | 
| 
       144 
28 
     | 
    
         | 
| 
       145 
29 
     | 
    
         
             
                *DHH*
         
     | 
| 
       146 
30 
     | 
    
         | 
| 
       147 
     | 
    
         
            -
            *   Add  
     | 
| 
       148 
     | 
    
         
            -
                to silence requests to "/up". This prevents the Kamal-required health checks from clogging up
         
     | 
| 
       149 
     | 
    
         
            -
                the production logs.
         
     | 
| 
      
 31 
     | 
    
         
            +
            *   Add RuboCop cache restoration to RuboCop job in GitHub Actions workflow templates.
         
     | 
| 
       150 
32 
     | 
    
         | 
| 
       151 
     | 
    
         
            -
                * 
     | 
| 
      
 33 
     | 
    
         
            +
                *Lovro Bikić*
         
     | 
| 
       152 
34 
     | 
    
         | 
| 
       153 
     | 
    
         
            -
            *    
     | 
| 
      
 35 
     | 
    
         
            +
            *   Skip generating mailer-related files in authentication generator if the application does
         
     | 
| 
      
 36 
     | 
    
         
            +
                not use ActionMailer
         
     | 
| 
       154 
37 
     | 
    
         | 
| 
       155 
     | 
    
         
            -
                 
     | 
| 
       156 
     | 
    
         
            -
                Dev Container. The original `mysql` and `trilogy` options will use `mysql`. Users who are not
         
     | 
| 
       157 
     | 
    
         
            -
                generating a Dev Container do not need to use the new options.
         
     | 
| 
      
 38 
     | 
    
         
            +
                *Rami Massoud*
         
     | 
| 
       158 
39 
     | 
    
         | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
            *   Introduce `bin/ci` for running your tests, style checks, and security audits locally or in the cloud.
         
     | 
| 
       160 
41 
     | 
    
         | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
                The global constant `STATS_DIRECTORIES` has been deprecated in favor of
         
     | 
| 
       164 
     | 
    
         
            -
                `Rails::CodeStatistics.register_directory`.
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
                Add extra directories with `Rails::CodeStatistics.register_directory(label, path)`:
         
     | 
| 
      
 42 
     | 
    
         
            +
                The specific steps are defined by a new DSL in `config/ci.rb`.
         
     | 
| 
       167 
43 
     | 
    
         | 
| 
       168 
44 
     | 
    
         
             
                ```ruby
         
     | 
| 
       169 
     | 
    
         
            -
                 
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
                ActiveSupport::ContinuousIntegration.run do
         
     | 
| 
      
 46 
     | 
    
         
            +
                  step "Setup", "bin/setup --skip-server"
         
     | 
| 
      
 47 
     | 
    
         
            +
                  step "Style: Ruby", "bin/rubocop"
         
     | 
| 
      
 48 
     | 
    
         
            +
                  step "Security: Gem audit", "bin/bundler-audit"
         
     | 
| 
      
 49 
     | 
    
         
            +
                  step "Tests: Rails", "bin/rails test test:system"
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
       171 
51 
     | 
    
         
             
                ```
         
     | 
| 
       172 
52 
     | 
    
         | 
| 
       173 
     | 
    
         
            -
                 
     | 
| 
      
 53 
     | 
    
         
            +
                Optionally use [gh-signoff](https://github.com/basecamp/gh-signoff) to
         
     | 
| 
      
 54 
     | 
    
         
            +
                set a green PR status - ready for merge.
         
     | 
| 
       174 
55 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
            * 
     | 
| 
      
 56 
     | 
    
         
            +
                *Jeremy Daer*, *DHH*
         
     | 
| 
       176 
57 
     | 
    
         | 
| 
       177 
     | 
    
         
            -
             
     | 
| 
       178 
     | 
    
         
            -
                code that generated these statements. It is also useful when using multiple
         
     | 
| 
       179 
     | 
    
         
            -
                databases because the query logs can identify which database is being used.
         
     | 
| 
      
 58 
     | 
    
         
            +
            *   Generate session controller tests when running the authentication generator.
         
     | 
| 
       180 
59 
     | 
    
         | 
| 
       181 
     | 
    
         
            -
                * 
     | 
| 
      
 60 
     | 
    
         
            +
                *Jerome Dalbert*
         
     | 
| 
       182 
61 
     | 
    
         | 
| 
       183 
     | 
    
         
            -
            *    
     | 
| 
      
 62 
     | 
    
         
            +
            *   Add bin/bundler-audit and config/bundler-audit.yml for discovering and managing known security problems with app gems.
         
     | 
| 
       184 
63 
     | 
    
         | 
| 
       185 
     | 
    
         
            -
                 
     | 
| 
       186 
     | 
    
         
            -
                url_helpers receives a route call / asked if it responds to a route.
         
     | 
| 
       187 
     | 
    
         
            -
                Previously, this was executed unconditionally on boot, which can
         
     | 
| 
       188 
     | 
    
         
            -
                slow down boot time unnecessarily for larger apps with lots of routes.
         
     | 
| 
      
 64 
     | 
    
         
            +
                *DHH*
         
     | 
| 
       189 
65 
     | 
    
         | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
                continue to eagerly load routes on boot.
         
     | 
| 
      
 66 
     | 
    
         
            +
            *   Rails no longer generates a `bin/bundle` binstub when creating new applications.
         
     | 
| 
       192 
67 
     | 
    
         | 
| 
       193 
     | 
    
         
            -
                 
     | 
| 
      
 68 
     | 
    
         
            +
                The `bin/bundle` binstub used to help activate the right version of bundler.
         
     | 
| 
      
 69 
     | 
    
         
            +
                This is no longer necessary as this mechanism is now part of Rubygem itself.
         
     | 
| 
       194 
70 
     | 
    
         | 
| 
       195 
     | 
    
         
            -
            * 
     | 
| 
      
 71 
     | 
    
         
            +
                *Edouard Chin*
         
     | 
| 
       196 
72 
     | 
    
         | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
            *   Add a `SessionTestHelper` module with `sign_in_as(user)` and `sign_out` test helpers when
         
     | 
| 
      
 74 
     | 
    
         
            +
                running `rails g authentication`. Simplifies authentication in integration tests.
         
     | 
| 
       198 
75 
     | 
    
         | 
| 
       199 
     | 
    
         
            -
            * 
     | 
| 
      
 76 
     | 
    
         
            +
                *Bijan Rahnema*
         
     | 
| 
       200 
77 
     | 
    
         | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
            *   Rate limit password resets in authentication generator
         
     | 
| 
       202 
79 
     | 
    
         | 
| 
       203 
     | 
    
         
            -
                 
     | 
| 
       204 
     | 
    
         
            -
                bin/rails generate authentication
         
     | 
| 
       205 
     | 
    
         
            -
                ```
         
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
     | 
    
         
            -
                Generated files:
         
     | 
| 
       208 
     | 
    
         
            -
             
     | 
| 
       209 
     | 
    
         
            -
                ```
         
     | 
| 
       210 
     | 
    
         
            -
                app/models/current.rb
         
     | 
| 
       211 
     | 
    
         
            -
                app/models/user.rb
         
     | 
| 
       212 
     | 
    
         
            -
                app/models/session.rb
         
     | 
| 
       213 
     | 
    
         
            -
                app/controllers/sessions_controller.rb
         
     | 
| 
       214 
     | 
    
         
            -
                app/controllers/passwords_controller.rb
         
     | 
| 
       215 
     | 
    
         
            -
                app/mailers/passwords_mailer.rb
         
     | 
| 
       216 
     | 
    
         
            -
                app/views/sessions/new.html.erb
         
     | 
| 
       217 
     | 
    
         
            -
                app/views/passwords/new.html.erb
         
     | 
| 
       218 
     | 
    
         
            -
                app/views/passwords/edit.html.erb
         
     | 
| 
       219 
     | 
    
         
            -
                app/views/passwords_mailer/reset.html.erb
         
     | 
| 
       220 
     | 
    
         
            -
                app/views/passwords_mailer/reset.text.erb
         
     | 
| 
       221 
     | 
    
         
            -
                db/migrate/xxxxxxx_create_users.rb
         
     | 
| 
       222 
     | 
    
         
            -
                db/migrate/xxxxxxx_create_sessions.rb
         
     | 
| 
       223 
     | 
    
         
            -
                test/mailers/previews/passwords_mailer_preview.rb
         
     | 
| 
       224 
     | 
    
         
            -
                ```
         
     | 
| 
      
 80 
     | 
    
         
            +
                This helps mitigate abuse from attackers spamming the password reset form.
         
     | 
| 
       225 
81 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
                * 
     | 
| 
      
 82 
     | 
    
         
            +
                *Chris Oliver*
         
     | 
| 
       227 
83 
     | 
    
         | 
| 
      
 84 
     | 
    
         
            +
            *   Update `rails new --minimal` option
         
     | 
| 
       228 
85 
     | 
    
         | 
| 
       229 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
                Extend the `--minimal` flag to exclude recently added features:
         
     | 
| 
      
 87 
     | 
    
         
            +
                `skip_brakeman`, `skip_ci`, `skip_docker`, `skip_kamal`, `skip_rubocop`, `skip_solid` and `skip_thruster`.
         
     | 
| 
       230 
88 
     | 
    
         | 
| 
       231 
     | 
    
         
            -
                 
     | 
| 
      
 89 
     | 
    
         
            +
                *eelcoj*
         
     | 
| 
       232 
90 
     | 
    
         | 
| 
       233 
     | 
    
         
            -
             
     | 
| 
       234 
     | 
    
         
            -
                bin/rails generate migration CreateUsers email_address:string!:uniq password_digest:string!
         
     | 
| 
       235 
     | 
    
         
            -
                ```
         
     | 
| 
      
 91 
     | 
    
         
            +
            *   Add `application-name` metadata to application layout
         
     | 
| 
       236 
92 
     | 
    
         | 
| 
       237 
     | 
    
         
            -
                 
     | 
| 
      
 93 
     | 
    
         
            +
                The following metatag will be added to `app/views/layouts/application.html.erb`
         
     | 
| 
       238 
94 
     | 
    
         | 
| 
       239 
     | 
    
         
            -
                ``` 
     | 
| 
       240 
     | 
    
         
            -
                 
     | 
| 
       241 
     | 
    
         
            -
                  def change
         
     | 
| 
       242 
     | 
    
         
            -
                    create_table :users do |t|
         
     | 
| 
       243 
     | 
    
         
            -
                      t.string :email_address, null: false
         
     | 
| 
       244 
     | 
    
         
            -
                      t.string :password_digest, null: false
         
     | 
| 
       245 
     | 
    
         
            -
             
     | 
| 
       246 
     | 
    
         
            -
                      t.timestamps
         
     | 
| 
       247 
     | 
    
         
            -
                    end
         
     | 
| 
       248 
     | 
    
         
            -
                    add_index :users, :email_address, unique: true
         
     | 
| 
       249 
     | 
    
         
            -
                  end
         
     | 
| 
       250 
     | 
    
         
            -
                end
         
     | 
| 
      
 95 
     | 
    
         
            +
                ```html
         
     | 
| 
      
 96 
     | 
    
         
            +
                <meta name="application-name" content="Name of Rails Application">
         
     | 
| 
       251 
97 
     | 
    
         
             
                ```
         
     | 
| 
       252 
98 
     | 
    
         | 
| 
       253 
     | 
    
         
            -
                * 
     | 
| 
       254 
     | 
    
         
            -
             
     | 
| 
       255 
     | 
    
         
            -
            *   Add a `script` folder to applications, and a scripts generator.
         
     | 
| 
       256 
     | 
    
         
            -
             
     | 
| 
       257 
     | 
    
         
            -
                The new `script` folder is meant to hold one-off or general purpose scripts,
         
     | 
| 
       258 
     | 
    
         
            -
                such as data migration scripts, cleanup scripts, etc.
         
     | 
| 
      
 99 
     | 
    
         
            +
                *Steve Polito*
         
     | 
| 
       259 
100 
     | 
    
         | 
| 
       260 
     | 
    
         
            -
             
     | 
| 
       261 
     | 
    
         
            -
             
     | 
| 
       262 
     | 
    
         
            -
                ```
         
     | 
| 
       263 
     | 
    
         
            -
                bin/rails generate script my_script
         
     | 
| 
       264 
     | 
    
         
            -
                bin/rails generate script data/backfill
         
     | 
| 
       265 
     | 
    
         
            -
                ```
         
     | 
| 
      
 101 
     | 
    
         
            +
            *   Use `secret_key_base` from ENV or credentials when present locally.
         
     | 
| 
       266 
102 
     | 
    
         | 
| 
       267 
     | 
    
         
            -
                 
     | 
| 
      
 103 
     | 
    
         
            +
                When ENV["SECRET_KEY_BASE"] or
         
     | 
| 
      
 104 
     | 
    
         
            +
                `Rails.application.credentials.secret_key_base` is set for test or
         
     | 
| 
      
 105 
     | 
    
         
            +
                development, it is used for the `Rails.config.secret_key_base`,
         
     | 
| 
      
 106 
     | 
    
         
            +
                instead of generating a `tmp/local_secret.txt` file.
         
     | 
| 
       268 
107 
     | 
    
         | 
| 
       269 
     | 
    
         
            -
                 
     | 
| 
       270 
     | 
    
         
            -
                bundle exec ruby script/my_script.rb
         
     | 
| 
       271 
     | 
    
         
            -
                bundle exec ruby script/data/backfill.rb
         
     | 
| 
       272 
     | 
    
         
            -
                ```
         
     | 
| 
      
 108 
     | 
    
         
            +
                *Petrik de Heus*
         
     | 
| 
       273 
109 
     | 
    
         | 
| 
       274 
     | 
    
         
            -
             
     | 
| 
      
 110 
     | 
    
         
            +
            *   Introduce `RAILS_MASTER_KEY` placeholder in generated ci.yml files
         
     | 
| 
       275 
111 
     | 
    
         | 
| 
       276 
     | 
    
         
            -
            * 
     | 
| 
      
 112 
     | 
    
         
            +
                *Steve Polito*
         
     | 
| 
       277 
113 
     | 
    
         | 
| 
       278 
     | 
    
         
            -
             
     | 
| 
      
 114 
     | 
    
         
            +
            *   Colorize the Rails console prompt even on non standard environments.
         
     | 
| 
       279 
115 
     | 
    
         | 
| 
       280 
     | 
    
         
            -
            * 
     | 
| 
      
 116 
     | 
    
         
            +
                *Lorenzo Zabot*
         
     | 
| 
       281 
117 
     | 
    
         | 
| 
       282 
     | 
    
         
            -
             
     | 
| 
      
 118 
     | 
    
         
            +
            *   Don't enable YJIT in development and test environments
         
     | 
| 
       283 
119 
     | 
    
         | 
| 
       284 
     | 
    
         
            -
             
     | 
| 
       285 
     | 
    
         
            -
                 
     | 
| 
      
 120 
     | 
    
         
            +
                Development and test environments tend to reload code and redefine methods (e.g. mocking),
         
     | 
| 
      
 121 
     | 
    
         
            +
                hence YJIT isn't generally faster in these environments.
         
     | 
| 
       286 
122 
     | 
    
         | 
| 
       287 
     | 
    
         
            -
                * 
     | 
| 
      
 123 
     | 
    
         
            +
                *Ali Ismayilov*, *Jean Boussier*
         
     | 
| 
       288 
124 
     | 
    
         | 
| 
       289 
     | 
    
         
            -
            *    
     | 
| 
       290 
     | 
    
         
            -
                This can be skipped using --skip-kamal. See more: https://kamal-deploy.org/
         
     | 
| 
      
 125 
     | 
    
         
            +
            *   Only include PermissionsPolicy::Middleware if policy is configured.
         
     | 
| 
       291 
126 
     | 
    
         | 
| 
       292 
     | 
    
         
            -
                * 
     | 
| 
      
 127 
     | 
    
         
            +
                *Petrik de Heus*
         
     | 
| 
       293 
128 
     | 
    
         | 
| 
       294 
     | 
    
         
            -
            Please check [ 
     | 
| 
      
 129 
     | 
    
         
            +
            Please check [8-0-stable](https://github.com/rails/rails/blob/8-0-stable/railties/CHANGELOG.md) for previous changes.
         
     | 
| 
         @@ -26,6 +26,8 @@ module Minitest 
     | 
|
| 
       26 
26 
     | 
    
         
             
              end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
              class ProfileReporter < Reporter
         
     | 
| 
      
 29 
     | 
    
         
            +
                attr_accessor :results
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       29 
31 
     | 
    
         
             
                def initialize(io = $stdout, options = {})
         
     | 
| 
       30 
32 
     | 
    
         
             
                  super
         
     | 
| 
       31 
33 
     | 
    
         
             
                  @results = []
         
     | 
| 
         @@ -33,26 +35,49 @@ module Minitest 
     | 
|
| 
       33 
35 
     | 
    
         
             
                end
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
                def record(result)
         
     | 
| 
       36 
     | 
    
         
            -
                   
     | 
| 
      
 38 
     | 
    
         
            +
                  if output_file = ENV["RAILTIES_OUTPUT_FILE"]
         
     | 
| 
      
 39 
     | 
    
         
            +
                    File.open(output_file, "a") do |f|
         
     | 
| 
      
 40 
     | 
    
         
            +
                      # Round-trip for re-serialization
         
     | 
| 
      
 41 
     | 
    
         
            +
                      data = JSON.parse(result.to_json)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      data[:location] = result.location
         
     | 
| 
      
 43 
     | 
    
         
            +
                      f.puts(data.to_json)
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  else
         
     | 
| 
      
 46 
     | 
    
         
            +
                    @results << result
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                def passed?
         
     | 
| 
      
 51 
     | 
    
         
            +
                  true
         
     | 
| 
       37 
52 
     | 
    
         
             
                end
         
     | 
| 
       38 
53 
     | 
    
         | 
| 
       39 
54 
     | 
    
         
             
                def report
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
      
 55 
     | 
    
         
            +
                  # Skip if we're outputting to a file
         
     | 
| 
      
 56 
     | 
    
         
            +
                  return if ENV["RAILTIES_OUTPUT_FILE"]
         
     | 
| 
      
 57 
     | 
    
         
            +
                  print_summary
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
       41 
59 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                   
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 60 
     | 
    
         
            +
                def summary
         
     | 
| 
      
 61 
     | 
    
         
            +
                  print_summary
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                private
         
     | 
| 
      
 65 
     | 
    
         
            +
                  def print_summary
         
     | 
| 
      
 66 
     | 
    
         
            +
                    total_time = @results.sum(&:time)
         
     | 
| 
       45 
67 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 68 
     | 
    
         
            +
                    @results.sort! { |a, b| b.time <=> a.time }
         
     | 
| 
      
 69 
     | 
    
         
            +
                    slow_results = @results.take(@count)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    slow_tests_total_time = slow_results.sum(&:time)
         
     | 
| 
       47 
71 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                    io.puts(" 
     | 
| 
      
 72 
     | 
    
         
            +
                    ratio = (total_time == 0) ? 0.0 : (slow_tests_total_time / total_time) * 100
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                    io.puts("\nTop %d slowest tests (%.2f seconds, %.1f%% of total time):\n" % [slow_results.size, slow_tests_total_time, ratio])
         
     | 
| 
      
 75 
     | 
    
         
            +
                    slow_results.each do |result|
         
     | 
| 
      
 76 
     | 
    
         
            +
                      io.puts("  %s\n    %.4f seconds %s\n" % [result.location, result.time, source_location(result)])
         
     | 
| 
      
 77 
     | 
    
         
            +
                    end
         
     | 
| 
      
 78 
     | 
    
         
            +
                    io.puts("\n")
         
     | 
| 
       51 
79 
     | 
    
         
             
                  end
         
     | 
| 
       52 
     | 
    
         
            -
                  io.puts("\n")
         
     | 
| 
       53 
     | 
    
         
            -
                end
         
     | 
| 
       54 
80 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                private
         
     | 
| 
       56 
81 
     | 
    
         
             
                  def source_location(result)
         
     | 
| 
       57 
82 
     | 
    
         
             
                    filename, line = result.source_location
         
     | 
| 
       58 
83 
     | 
    
         
             
                    return "" unless filename
         
     | 
| 
         @@ -102,8 +127,19 @@ module Minitest 
     | 
|
| 
       102 
127 
     | 
    
         
             
                  options[:profile] = count
         
     | 
| 
       103 
128 
     | 
    
         
             
                end
         
     | 
| 
       104 
129 
     | 
    
         | 
| 
      
 130 
     | 
    
         
            +
                opts.on(/^[^-]/) do |test_file|
         
     | 
| 
      
 131 
     | 
    
         
            +
                  options[:test_files] ||= []
         
     | 
| 
      
 132 
     | 
    
         
            +
                  options[:test_files] << test_file
         
     | 
| 
      
 133 
     | 
    
         
            +
                end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
       105 
135 
     | 
    
         
             
                options[:color] = true
         
     | 
| 
       106 
136 
     | 
    
         
             
                options[:output_inline] = true
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                opts.on do
         
     | 
| 
      
 139 
     | 
    
         
            +
                  if ::Rails::TestUnit::Runner.load_test_files
         
     | 
| 
      
 140 
     | 
    
         
            +
                    ::Rails::TestUnit::Runner.load_tests(options.fetch(:test_files, []))
         
     | 
| 
      
 141 
     | 
    
         
            +
                  end
         
     | 
| 
      
 142 
     | 
    
         
            +
                end
         
     | 
| 
       107 
143 
     | 
    
         
             
              end
         
     | 
| 
       108 
144 
     | 
    
         | 
| 
       109 
145 
     | 
    
         
             
              # Owes great inspiration to test runner trailblazers like RSpec,
         
     | 
| 
         @@ -71,6 +71,11 @@ module Rails 
     | 
|
| 
       71 
71 
     | 
    
         
             
                    end
         
     | 
| 
       72 
72 
     | 
    
         
             
                  end
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
      
 74 
     | 
    
         
            +
                  initializer :initialize_event_reporter, group: :all do
         
     | 
| 
      
 75 
     | 
    
         
            +
                    Rails.event.raise_on_error = config.consider_all_requests_local
         
     | 
| 
      
 76 
     | 
    
         
            +
                    Rails.event.debug_mode = config.consider_all_requests_local
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
       74 
79 
     | 
    
         
             
                  # Initialize cache early in the stack so railties can make use of it.
         
     | 
| 
       75 
80 
     | 
    
         
             
                  initializer :initialize_cache, group: :all do
         
     | 
| 
       76 
81 
     | 
    
         
             
                    cache_format_version = config.active_support.delete(:cache_format_version)
         
     | 
| 
         @@ -21,6 +21,7 @@ module Rails 
     | 
|
| 
       21 
21 
     | 
    
         
             
                                :beginning_of_week, :filter_redirect, :x,
         
     | 
| 
       22 
22 
     | 
    
         
             
                                :content_security_policy_report_only,
         
     | 
| 
       23 
23 
     | 
    
         
             
                                :content_security_policy_nonce_generator, :content_security_policy_nonce_directives,
         
     | 
| 
      
 24 
     | 
    
         
            +
                                :content_security_policy_nonce_auto,
         
     | 
| 
       24 
25 
     | 
    
         
             
                                :require_master_key, :credentials, :disable_sandbox, :sandbox_by_default,
         
     | 
| 
       25 
26 
     | 
    
         
             
                                :add_autoload_paths_to_load_path, :rake_eager_load, :server_timing, :log_file_size,
         
     | 
| 
       26 
27 
     | 
    
         
             
                                :dom_testing_default_html_version, :yjit
         
     | 
| 
         @@ -72,6 +73,7 @@ module Rails 
     | 
|
| 
       72 
73 
     | 
    
         
             
                    @content_security_policy_report_only     = false
         
     | 
| 
       73 
74 
     | 
    
         
             
                    @content_security_policy_nonce_generator = nil
         
     | 
| 
       74 
75 
     | 
    
         
             
                    @content_security_policy_nonce_directives = nil
         
     | 
| 
      
 76 
     | 
    
         
            +
                    @content_security_policy_nonce_auto      = false
         
     | 
| 
       75 
77 
     | 
    
         
             
                    @require_master_key                      = false
         
     | 
| 
       76 
78 
     | 
    
         
             
                    @loaded_config_version                   = nil
         
     | 
| 
       77 
79 
     | 
    
         
             
                    @credentials                             = ActiveSupport::InheritableOptions.new(credentials_defaults)
         
     | 
| 
         @@ -346,6 +348,30 @@ module Rails 
     | 
|
| 
       346 
348 
     | 
    
         
             
                      end
         
     | 
| 
       347 
349 
     | 
    
         | 
| 
       348 
350 
     | 
    
         
             
                      Regexp.timeout ||= 1 if Regexp.respond_to?(:timeout=)
         
     | 
| 
      
 351 
     | 
    
         
            +
                    when "8.1"
         
     | 
| 
      
 352 
     | 
    
         
            +
                      load_defaults "8.0"
         
     | 
| 
      
 353 
     | 
    
         
            +
             
     | 
| 
      
 354 
     | 
    
         
            +
                      # Development and test environments tend to reload code and
         
     | 
| 
      
 355 
     | 
    
         
            +
                      # redefine methods (e.g. mocking), hence YJIT isn't generally
         
     | 
| 
      
 356 
     | 
    
         
            +
                      # faster in these environments.
         
     | 
| 
      
 357 
     | 
    
         
            +
                      self.yjit = !Rails.env.local?
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
      
 359 
     | 
    
         
            +
                      if respond_to?(:action_controller)
         
     | 
| 
      
 360 
     | 
    
         
            +
                        action_controller.escape_json_responses = false
         
     | 
| 
      
 361 
     | 
    
         
            +
                        action_controller.action_on_path_relative_redirect = :raise
         
     | 
| 
      
 362 
     | 
    
         
            +
                      end
         
     | 
| 
      
 363 
     | 
    
         
            +
             
     | 
| 
      
 364 
     | 
    
         
            +
                      if respond_to?(:active_record)
         
     | 
| 
      
 365 
     | 
    
         
            +
                        active_record.raise_on_missing_required_finder_order_columns = true
         
     | 
| 
      
 366 
     | 
    
         
            +
                      end
         
     | 
| 
      
 367 
     | 
    
         
            +
             
     | 
| 
      
 368 
     | 
    
         
            +
                      if respond_to?(:action_view)
         
     | 
| 
      
 369 
     | 
    
         
            +
                        action_view.render_tracker = :ruby
         
     | 
| 
      
 370 
     | 
    
         
            +
                      end
         
     | 
| 
      
 371 
     | 
    
         
            +
             
     | 
| 
      
 372 
     | 
    
         
            +
                      if respond_to?(:action_view)
         
     | 
| 
      
 373 
     | 
    
         
            +
                        action_view.remove_hidden_field_autocomplete = true
         
     | 
| 
      
 374 
     | 
    
         
            +
                      end
         
     | 
| 
       349 
375 
     | 
    
         
             
                    else
         
     | 
| 
       350 
376 
     | 
    
         
             
                      raise "Unknown version #{target_version.to_s.inspect}"
         
     | 
| 
       351 
377 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -83,7 +83,7 @@ module Rails 
     | 
|
| 
       83 
83 
     | 
    
         
             
                      unless config.api_only
         
     | 
| 
       84 
84 
     | 
    
         
             
                        middleware.use ::ActionDispatch::Flash
         
     | 
| 
       85 
85 
     | 
    
         
             
                        middleware.use ::ActionDispatch::ContentSecurityPolicy::Middleware
         
     | 
| 
       86 
     | 
    
         
            -
                        middleware.use ::ActionDispatch::PermissionsPolicy::Middleware
         
     | 
| 
      
 86 
     | 
    
         
            +
                        middleware.use ::ActionDispatch::PermissionsPolicy::Middleware if config.permissions_policy
         
     | 
| 
       87 
87 
     | 
    
         
             
                      end
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
                      middleware.use ::Rack::Head
         
     | 
    
        data/lib/rails/application.rb
    CHANGED
    
    | 
         @@ -2,10 +2,8 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require "yaml"
         
     | 
| 
       4 
4 
     | 
    
         
             
            require "active_support/core_ext/hash/keys"
         
     | 
| 
       5 
     | 
    
         
            -
            require "active_support/core_ext/object/blank"
         
     | 
| 
       6 
5 
     | 
    
         
             
            require "active_support/key_generator"
         
     | 
| 
       7 
6 
     | 
    
         
             
            require "active_support/message_verifiers"
         
     | 
| 
       8 
     | 
    
         
            -
            require "active_support/deprecation"
         
     | 
| 
       9 
7 
     | 
    
         
             
            require "active_support/encrypted_configuration"
         
     | 
| 
       10 
8 
     | 
    
         
             
            require "active_support/hash_with_indifferent_access"
         
     | 
| 
       11 
9 
     | 
    
         
             
            require "active_support/configuration_file"
         
     | 
| 
         @@ -616,7 +614,7 @@ module Rails 
     | 
|
| 
       616 
614 
     | 
    
         
             
                end
         
     | 
| 
       617 
615 
     | 
    
         | 
| 
       618 
616 
     | 
    
         
             
                def railties_initializers(current) # :nodoc:
         
     | 
| 
       619 
     | 
    
         
            -
                  initializers =  
     | 
| 
      
 617 
     | 
    
         
            +
                  initializers = Initializable::Collection.new
         
     | 
| 
       620 
618 
     | 
    
         
             
                  ordered_railties.reverse.flatten.each do |r|
         
     | 
| 
       621 
619 
     | 
    
         
             
                    if r == self
         
     | 
| 
       622 
620 
     | 
    
         
             
                      initializers += current
         
     | 
    
        data/lib/rails/command/base.rb
    CHANGED
    
    
    
        data/lib/rails/command.rb
    CHANGED
    
    
| 
         @@ -91,9 +91,9 @@ module Rails 
     | 
|
| 
       91 
91 
     | 
    
         
             
                    IRB.conf[:IRB_NAME] = @app.name if IRB.conf[:IRB_NAME] == "irb"
         
     | 
| 
       92 
92 
     | 
    
         | 
| 
       93 
93 
     | 
    
         
             
                    IRB.conf[:PROMPT][:RAILS_PROMPT] = {
         
     | 
| 
       94 
     | 
    
         
            -
                      PROMPT_I: "#{prompt_prefix}> ",
         
     | 
| 
       95 
     | 
    
         
            -
                      PROMPT_S: "#{prompt_prefix}%l ",
         
     | 
| 
       96 
     | 
    
         
            -
                      PROMPT_C: "#{prompt_prefix}* ",
         
     | 
| 
      
 94 
     | 
    
         
            +
                      PROMPT_I: "#{prompt_prefix}:%03n> ",
         
     | 
| 
      
 95 
     | 
    
         
            +
                      PROMPT_S: "#{prompt_prefix}:%03n%l ",
         
     | 
| 
      
 96 
     | 
    
         
            +
                      PROMPT_C: "#{prompt_prefix}:%03n* ",
         
     | 
| 
       97 
97 
     | 
    
         
             
                      RETURN: "=> %s\n"
         
     | 
| 
       98 
98 
     | 
    
         
             
                    }
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
         @@ -122,7 +122,7 @@ module Rails 
     | 
|
| 
       122 
122 
     | 
    
         
             
                    when "production"
         
     | 
| 
       123 
123 
     | 
    
         
             
                      IRB::Color.colorize("prod", [:RED])
         
     | 
| 
       124 
124 
     | 
    
         
             
                    else
         
     | 
| 
       125 
     | 
    
         
            -
                      Rails.env
         
     | 
| 
      
 125 
     | 
    
         
            +
                      IRB::Color.colorize(Rails.env, [:MAGENTA])
         
     | 
| 
       126 
126 
     | 
    
         
             
                    end
         
     | 
| 
       127 
127 
     | 
    
         
             
                  end
         
     | 
| 
       128 
128 
     | 
    
         
             
                end
         
     |