railties 7.1.5.1 → 7.2.3

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.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +206 -759
  3. data/README.rdoc +1 -1
  4. data/lib/minitest/rails_plugin.rb +6 -3
  5. data/lib/rails/all.rb +1 -3
  6. data/lib/rails/api/task.rb +6 -4
  7. data/lib/rails/application/bootstrap.rb +6 -9
  8. data/lib/rails/application/configuration.rb +66 -33
  9. data/lib/rails/application/dummy_config.rb +2 -2
  10. data/lib/rails/application/finisher.rb +7 -0
  11. data/lib/rails/application.rb +32 -96
  12. data/lib/rails/backtrace_cleaner.rb +15 -2
  13. data/lib/rails/cli.rb +0 -1
  14. data/lib/rails/command.rb +1 -1
  15. data/lib/rails/commands/app/update_command.rb +102 -0
  16. data/lib/rails/commands/boot/boot_command.rb +14 -0
  17. data/lib/rails/commands/console/console_command.rb +2 -21
  18. data/lib/rails/commands/console/irb_console.rb +133 -0
  19. data/lib/rails/commands/credentials/credentials_command.rb +2 -2
  20. data/lib/rails/commands/dbconsole/dbconsole_command.rb +21 -30
  21. data/lib/rails/commands/devcontainer/devcontainer_command.rb +39 -0
  22. data/lib/rails/commands/rake/rake_command.rb +1 -1
  23. data/lib/rails/commands/runner/runner_command.rb +14 -3
  24. data/lib/rails/commands/server/server_command.rb +5 -3
  25. data/lib/rails/configuration.rb +10 -1
  26. data/lib/rails/console/app.rb +5 -32
  27. data/lib/rails/console/helpers.rb +5 -16
  28. data/lib/rails/console/methods.rb +23 -0
  29. data/lib/rails/engine.rb +7 -7
  30. data/lib/rails/gem_version.rb +3 -3
  31. data/lib/rails/generators/actions.rb +9 -5
  32. data/lib/rails/generators/app_base.rb +76 -51
  33. data/lib/rails/generators/base.rb +5 -1
  34. data/lib/rails/generators/database.rb +227 -69
  35. data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +2 -0
  36. data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +2 -0
  37. data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +2 -0
  38. data/lib/rails/generators/generated_attribute.rb +26 -1
  39. data/lib/rails/generators/rails/app/app_generator.rb +56 -28
  40. data/lib/rails/generators/rails/app/templates/Dockerfile.tt +22 -15
  41. data/lib/rails/generators/rails/app/templates/Gemfile.tt +17 -17
  42. data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +4 -0
  43. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +8 -1
  44. data/lib/rails/generators/rails/app/templates/app/views/pwa/manifest.json.erb.tt +22 -0
  45. data/lib/rails/generators/rails/app/templates/app/views/pwa/service-worker.js +26 -0
  46. data/lib/rails/generators/rails/app/templates/bin/brakeman.tt +6 -0
  47. data/lib/rails/generators/rails/app/templates/bin/rubocop.tt +7 -0
  48. data/lib/rails/generators/rails/app/templates/bin/setup.tt +6 -2
  49. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +1 -1
  50. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +3 -3
  51. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +7 -0
  52. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +8 -1
  53. data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +3 -3
  54. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +14 -7
  55. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +8 -0
  56. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +8 -5
  57. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +1 -1
  58. data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +1 -1
  59. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_2.rb.tt +70 -0
  60. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +25 -35
  61. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +6 -0
  62. data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +5 -0
  63. data/lib/rails/generators/rails/app/templates/dockerignore.tt +13 -0
  64. data/lib/rails/generators/rails/app/templates/github/ci.yml.tt +140 -0
  65. data/lib/rails/generators/rails/app/templates/github/dependabot.yml +12 -0
  66. data/lib/rails/generators/rails/app/templates/gitignore.tt +3 -3
  67. data/lib/rails/generators/rails/app/templates/public/406-unsupported-browser.html +66 -0
  68. data/lib/rails/generators/rails/app/templates/public/icon.png +0 -0
  69. data/lib/rails/generators/rails/app/templates/public/icon.svg +3 -0
  70. data/lib/rails/generators/rails/app/templates/rubocop.yml.tt +8 -0
  71. data/lib/rails/generators/rails/app/templates/test/application_system_test_case.rb.tt +1 -1
  72. data/lib/rails/generators/rails/controller/controller_generator.rb +1 -1
  73. data/lib/rails/generators/rails/db/system/change/change_generator.rb +131 -20
  74. data/lib/rails/generators/rails/devcontainer/devcontainer_generator.rb +166 -0
  75. data/lib/rails/generators/rails/devcontainer/templates/devcontainer/Dockerfile.tt +3 -0
  76. data/lib/rails/generators/rails/devcontainer/templates/devcontainer/compose.yaml.tt +47 -0
  77. data/lib/rails/generators/rails/devcontainer/templates/devcontainer/devcontainer.json.tt +37 -0
  78. data/lib/rails/generators/rails/migration/migration_generator.rb +4 -0
  79. data/lib/rails/generators/rails/plugin/plugin_generator.rb +40 -7
  80. data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +2 -2
  81. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +5 -1
  82. data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +2 -0
  83. data/lib/rails/generators/rails/plugin/templates/bin/rubocop.tt +7 -0
  84. data/lib/rails/generators/rails/plugin/templates/github/ci.yml.tt +104 -0
  85. data/lib/rails/generators/rails/plugin/templates/github/dependabot.yml +12 -0
  86. data/lib/rails/generators/rails/plugin/templates/rubocop.yml.tt +8 -0
  87. data/lib/rails/generators/rails/plugin/templates/test/application_system_test_case.rb.tt +1 -1
  88. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +2 -2
  89. data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +2 -2
  90. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +2 -2
  91. data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb.tt +6 -4
  92. data/lib/rails/generators/test_unit/mailer/templates/preview.rb.tt +3 -2
  93. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +15 -1
  94. data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +2 -2
  95. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +2 -2
  96. data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +2 -0
  97. data/lib/rails/generators/test_unit/system/templates/application_system_test_case.rb.tt +1 -1
  98. data/lib/rails/generators/testing/assertions.rb +20 -0
  99. data/lib/rails/generators/testing/behavior.rb +7 -6
  100. data/lib/rails/generators.rb +11 -7
  101. data/lib/rails/health_controller.rb +1 -1
  102. data/lib/rails/info.rb +2 -2
  103. data/lib/rails/mailers_controller.rb +14 -1
  104. data/lib/rails/paths.rb +2 -2
  105. data/lib/rails/pwa_controller.rb +15 -0
  106. data/lib/rails/rack/logger.rb +15 -7
  107. data/lib/rails/railtie/configurable.rb +2 -2
  108. data/lib/rails/railtie.rb +2 -3
  109. data/lib/rails/tasks/framework.rake +0 -26
  110. data/lib/rails/tasks/tmp.rake +1 -1
  111. data/lib/rails/templates/layouts/application.html.erb +1 -1
  112. data/lib/rails/templates/rails/mailers/email.html.erb +12 -8
  113. data/lib/rails/templates/rails/welcome/index.html.erb +4 -2
  114. data/lib/rails/test_help.rb +2 -4
  115. data/lib/rails/test_unit/reporter.rb +8 -2
  116. data/lib/rails/test_unit/runner.rb +30 -2
  117. data/lib/rails/test_unit/test_parser.rb +48 -0
  118. data/lib/rails.rb +6 -3
  119. metadata +68 -33
  120. data/lib/rails/app_updater.rb +0 -52
  121. data/lib/rails/commands/secrets/USAGE +0 -61
  122. data/lib/rails/commands/secrets/secrets_command.rb +0 -47
  123. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +0 -68
  124. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +0 -54
  125. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +0 -70
  126. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +0 -24
  127. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +0 -62
  128. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +0 -53
  129. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +0 -280
  130. data/lib/rails/generators/rails/app/templates/public/apple-touch-icon-precomposed.png +0 -0
  131. data/lib/rails/generators/rails/app/templates/public/apple-touch-icon.png +0 -0
  132. data/lib/rails/generators/rails/app/templates/public/favicon.ico +0 -0
  133. data/lib/rails/ruby_version_check.rb +0 -17
  134. data/lib/rails/secrets.rb +0 -110
data/CHANGELOG.md CHANGED
@@ -1,951 +1,398 @@
1
- ## Rails 7.1.5.1 (December 10, 2024) ##
2
-
3
- * No changes.
1
+ ## Rails 7.2.3 (October 28, 2025) ##
4
2
 
3
+ * Use `secret_key_base` from ENV or credentials when present locally.
5
4
 
6
- ## Rails 7.1.5 (October 30, 2024) ##
5
+ When ENV["SECRET_KEY_BASE"] or
6
+ `Rails.application.credentials.secret_key_base` is set for test or
7
+ development, it is used for the `Rails.config.secret_key_base`,
8
+ instead of generating a `tmp/local_secret.txt` file.
7
9
 
8
- * No changes.
10
+ *Petrik de Heus*
9
11
 
10
12
 
11
- ## Rails 7.1.4.2 (October 23, 2024) ##
13
+ ## Rails 7.2.2.2 (August 13, 2025) ##
12
14
 
13
15
  * No changes.
14
16
 
15
17
 
16
- ## Rails 7.1.4.1 (October 15, 2024) ##
18
+ ## Rails 7.2.2.1 (December 10, 2024) ##
17
19
 
18
20
  * No changes.
19
21
 
20
22
 
21
- ## Rails 7.1.4 (August 22, 2024) ##
22
-
23
- * Preserve `--asset-pipeline propshaft` when running `app:update`.
24
-
25
- *Zacharias Knudsen*
26
-
27
- * Allow string keys for SQLCommenter.
28
-
29
- *Ngan Pham*
30
-
31
- * Fix derived foreign key to return correctly when association id is part of query constraints.
32
-
33
- *Varun Sharma*
34
-
35
- * Show warning for `secret_key_base` in development too.
36
-
37
- *fatkodima*
38
-
39
- * Fix sanitizer vendor configuration in 7.1 defaults.
40
-
41
- In apps where `rails-html-sanitizer` was not eagerly loaded, the sanitizer default could end up
42
- being Rails::HTML4::Sanitizer when it should be set to `Rails::HTML5::Sanitizer`.
43
-
44
- *Mike Dalessio*, *Rafael Mendonça França*
45
-
46
- * Revert the use of `Concurrent.physical_processor_count` in default Puma config
47
-
48
- While for many people this saves one config to set, for many others using
49
- a shared hosting solution, this cause the default configuration to spawn
50
- way more workers than reasonable.
51
-
52
- There is unfortunately no reliable way to detect how many cores an application
53
- can realistically use, and even then, assuming the application should use
54
- all the machine resources is often wrong.
55
-
56
- *Jean Boussier*
57
-
58
-
59
- ## Rails 7.1.3.4 (June 04, 2024) ##
23
+ ## Rails 7.2.2 (October 30, 2024) ##
60
24
 
61
25
  * No changes.
62
26
 
63
27
 
64
- ## Rails 7.1.3.3 (May 16, 2024) ##
28
+ ## Rails 7.2.1.2 (October 23, 2024) ##
65
29
 
66
30
  * No changes.
67
31
 
68
32
 
69
- ## Rails 7.1.3.2 (February 21, 2024) ##
33
+ ## Rails 7.2.1.1 (October 15, 2024) ##
70
34
 
71
35
  * No changes.
72
36
 
73
37
 
74
- ## Rails 7.1.3.1 (February 21, 2024) ##
75
-
76
- * No changes.
38
+ ## Rails 7.2.1 (August 22, 2024) ##
77
39
 
40
+ * Fix `rails console` for application with non default application constant.
78
41
 
79
- ## Rails 7.1.3 (January 16, 2024) ##
42
+ The wrongly assumed the Rails application would be named `AppNamespace::Application`,
43
+ which is the default but not an obligation.
80
44
 
81
- * Make sure `config.after_routes_loaded` hook runs on boot.
45
+ *Jean Boussier*
82
46
 
83
- *Rafael Mendonça França*
47
+ * Fix the default Dockerfile to include the full sqlite3 package.
84
48
 
85
- * Fix `config.log_level` not being respected when using a `BroadcastLogger`
49
+ Prior to this it only included `libsqlite3`, so it wasn't enough to
50
+ run `rails dbconsole`.
86
51
 
87
- *Édouard Chin*
52
+ *Jerome Dalbert*
88
53
 
89
- * Fix isolated engines to take `ActiveRecord::Base.table_name_prefix` into consideration.
90
- This will allow for engine defined models, such as inside Active Storage, to respect
91
- Active Record table name prefix configuration.
54
+ * Don't update public directory during `app:update` command for API-only Applications.
92
55
 
93
- *Chedli Bourguiba*
56
+ *y-yagi*
94
57
 
95
- * The `bin/rails app:template` command will no longer add potentially unwanted
96
- gem platforms via `bundle lock --add-platform=...` commands.
58
+ * Don't add bin/brakeman if brakeman is not in bundle when upgrading an application.
97
59
 
98
- *Jonathan Hefner*
60
+ *Etienne Barrié*
99
61
 
62
+ * Remove PWA views and routes if its an API only project.
100
63
 
101
- ## Rails 7.1.2 (November 10, 2023) ##
64
+ *Jean Boussier*
102
65
 
103
- * Fix running `db:system:change` when app has no Dockerfile.
66
+ * Simplify generated Puma configuration
104
67
 
105
- *Hartley McGuire*
68
+ *DHH*, *Rafael Mendonça França*
106
69
 
107
- * If you accessed `config.eager_load_paths` and friends, later changes to
108
- `config.paths` were not reflected in the expected auto/eager load paths.
109
- Now, they are.
110
70
 
111
- This bug has been latent since Rails 3.
71
+ ## Rails 7.2.0 (August 09, 2024) ##
112
72
 
113
- Fixes #49629.
73
+ * The new `bin/rails boot` command boots the application and exits. Supports the
74
+ standard `-e/--environment` options.
114
75
 
115
76
  *Xavier Noria*
116
77
 
117
- ## Rails 7.1.1 (October 11, 2023) ##
78
+ * Create a Dev Container Generator that generates a Dev Container setup based on the current configuration
79
+ of the application. Usage:
118
80
 
119
- * Ensures the Rails generated Dockerfile uses correct ruby version and matches Gemfile.
81
+ `bin/rails devcontainer`
120
82
 
121
- *Abhay Nikam*
83
+ *Andrew Novoselac*
122
84
 
85
+ * Add Rubocop and GitHub Actions to plugin generator.
86
+ This can be skipped using --skip-rubocop and --skip-ci.
123
87
 
124
- ## Rails 7.1.0 (October 05, 2023) ##
88
+ *Chris Oliver*
125
89
 
126
- * No changes.
90
+ * Remove support for `oracle`, `sqlserver` and JRuby specific database adapters from the
91
+ `rails new` and `rails db:system:change` commands.
127
92
 
93
+ The supported options are `sqlite3`, `mysql`, `postgresql` and `trilogy`.
128
94
 
129
- ## Rails 7.1.0.rc2 (October 01, 2023) ##
95
+ *Andrew Novoselac*
130
96
 
131
- * Always set the Rails logger to be an instance of `ActiveSupport::BroadcastLogger`.
97
+ * Add options to `bin/rails app:update`.
132
98
 
133
- *Edouard Chin*
99
+ `bin/rails app:update` now supports the same generic options that generators do:
134
100
 
101
+ * `--force`: Accept all changes to existing files
102
+ * `--skip`: Refuse all changes to existing files
103
+ * `--pretend`: Don't make any changes
104
+ * `--quiet`: Don't output all changes made
135
105
 
136
- ## Rails 7.1.0.rc1 (September 27, 2023) ##
137
-
138
- * Require `concurrent-ruby` in `config/puma.rb` so that Puma can boot in
139
- production when `WEB_CONCURRENCY` is not explicitly specified.
140
-
141
- Fixes #49323.
142
-
143
- *Matt Brictson*
144
-
145
- * Raise error when generating attribute with dangerous name.
146
-
147
- The following will now raise an error as `save` and `hash` are already
148
- defined by Active Record.
149
-
150
- ```bash
151
- $ bin/rails generate model Post save
152
- $ bin/rails generate model Post hash
153
- ```
154
-
155
- *Petrik de Heus*
156
-
157
-
158
- ## Rails 7.1.0.beta1 (September 13, 2023) ##
159
-
160
- * Add ability to show slow tests to the test runner
161
-
162
- ```bash
163
- $ bin/test --profile # additionally prints 10 (default) slowest tests
164
- # or
165
- $ bin/test --profile 20 # prints 20 slowest tests
166
- ```
167
-
168
- *fatkodima*
169
-
170
- * `rails new --javascript` generator now supports Bun
171
-
172
- ```bash
173
- $ rails new my_new_app --javascript=bun
174
- ```
175
-
176
- *Jason Meller*
177
-
178
- * bin/setup uses `bun` instead of `yarn` when generated an app with bun
179
-
180
- Use `bun install` on `bin/setup` when using `bun`.
181
-
182
- *Cadu Ribeiro*
183
-
184
- * `config/application.rb` now includes
185
-
186
- ```ruby
187
- config.autoload_lib(ignore: %w(assets tasks))
188
- ```
189
-
190
- In practice, this means that new 7.1 applications autoload from `lib` out of the box.
191
-
192
- *Xavier Noria*
193
-
194
- * Add an option to start rails console in sandbox mode by default
195
-
196
- `sandbox_by_default` option is added to start rails console in sandbox
197
- mode by default. With this option turned on, `--no-sandbox` must be
198
- specified to start rails in non-sandbox mode.
199
-
200
- Note that this option is ignored when rails environment is development
201
- or test.
106
+ *Étienne Barrié*
202
107
 
203
- *Shouichi Kamiya*
108
+ * Implement Rails console commands and helpers with IRB v1.13's extension APIs.
204
109
 
205
- * Omit `webdrivers` gem dependency from `Gemfile` template
110
+ Rails console users will now see `helper`, `controller`, `new_session`, and `app` under
111
+ IRB help message's `Helper methods` category. And `reload!` command will be displayed under
112
+ the new `Rails console` commands category.
206
113
 
207
- *Sean Doyle*
114
+ Prior to this change, Rails console's commands and helper methods are added through IRB's
115
+ private components and don't show up in its help message, which led to poor discoverability.
208
116
 
209
- * Support filtering tests by line ranges
117
+ *Stan Lo*
210
118
 
211
- The new syntax allows you to filter tests by line ranges. For example, the
212
- following command runs tests from line 10 to 20.
119
+ * Remove deprecated `Rails::Generators::Testing::Behaviour`.
213
120
 
214
- ```bash
215
- $ rails test test/models/user_test.rb:10-20
216
- ```
121
+ *Rafael Mendonça França*
217
122
 
218
- *Shouichi Kamiya*, *Seonggi Yang*, *oljfte*, *Ryohei UEDA*
123
+ * Remove deprecated `find_cmd_and_exec` console helper.
219
124
 
220
- * Update default scaffold templates to set 303 (See Other) as status code
221
- on redirect for the update action for XHR requests other than GET or POST
222
- to avoid issues (e.g browsers trying to follow the redirect using the
223
- original request method resulting in double PATCH/PUT)
125
+ *Rafael Mendonça França*
224
126
 
225
- *Guillermo Iguaran*
127
+ * Remove deprecated `Rails.config.enable_dependency_loading`.
226
128
 
227
- * The new `config.autoload_lib_once` is similar to `config.autoload_lib`,
228
- except that it adds `lib` to `config.autoload_once_paths` instead.
129
+ *Rafael Mendonça França*
229
130
 
230
- By calling `config.autoload_lib_once`, classes and modules in `lib` can be
231
- autoloaded, even from application initializers, but won't be reloaded.
131
+ * Remove deprecated `Rails.application.secrets`.
232
132
 
233
- Please, see further details in the [autoloading
234
- guide](https://guides.rubyonrails.org/v7.1/autoloading_and_reloading_constants.html).
133
+ *Rafael Mendonça França*
235
134
 
236
- *Xavier Noria*
135
+ * Generated Gemfile will include `require: "debug/prelude"` for the `debug` gem.
237
136
 
238
- * Add `config.action_dispatch.debug_exception_log_level` to configure the log
239
- level used by `ActionDispatch::DebugExceptions`.
137
+ Requiring `debug` gem directly automatically activates it, which could introduce
138
+ additional overhead and memory usage even without entering a debugging session.
240
139
 
241
- The default is `:fatal`, but with `load_defaults "7.1"` the default will be
242
- `:error`.
140
+ By making Bundler require `debug/prelude` instead, developers can keep their access
141
+ to breakpoint methods like `debugger` or `binding.break`, but the debugger won't be
142
+ activated until a breakpoint is hit.
243
143
 
244
- *Hartley McGuire*
144
+ *Stan Lo*
245
145
 
246
- * Add `DATABASE` option to `railties:install:migrations`
146
+ * Skip generating a `test` job in ci.yml when a new application is generated with the
147
+ `--skip-test` option.
247
148
 
248
- This allows you to specify which database the migrations should be copied to
249
- when running `rails railties:install:migrations`.
149
+ *Steve Polito*
250
150
 
251
- ```bash
252
- $ rails railties:install:migrations DATABASE=animals
253
- ```
151
+ * Update the `.node-version` file conditionally generated for new applications to 20.11.1
254
152
 
255
- *Matthew Hirst*
153
+ *Steve Polito*
256
154
 
257
- * The new method `config.autoload_lib(ignore:)` provides a simple way to
258
- autoload from `lib`:
155
+ * Fix sanitizer vendor configuration in 7.1 defaults.
259
156
 
260
- ```ruby
261
- # config/application.rb
262
- config.autoload_lib(ignore: %w(assets tasks))
263
- ```
157
+ In apps where rails-html-sanitizer was not eagerly loaded, the sanitizer default could end up
158
+ being Rails::HTML4::Sanitizer when it should be set to Rails::HTML5::Sanitizer.
264
159
 
265
- Please, see further details in the [autoloading
266
- guide](https://guides.rubyonrails.org/v7.1/autoloading_and_reloading_constants.html).
160
+ *Mike Dalessio*, *Rafael Mendonça França*
267
161
 
268
- *Xavier Noria*
162
+ * Set `action_mailer.default_url_options` values in `development` and `test`.
269
163
 
270
- * Don't show secret_key_base for `Rails.application.config#inspect`.
164
+ Prior to this commit, new Rails applications would raise `ActionView::Template::Error`
165
+ if a mailer included a url built with a `*_path` helper.
271
166
 
272
- Before:
167
+ *Steve Polito*
273
168
 
274
- ```ruby
275
- Rails.application.config.inspect
276
- "#<Rails::Application::Configuration:0x00000001132b02a0 @root=... @secret_key_base=\"b3c631c314c0bbca50c1b2843150fe33\" ... >"
277
- ```
169
+ * Introduce `Rails::Generators::Testing::Assertions#assert_initializer`.
278
170
 
279
- After:
171
+ Compliments the existing `initializer` generator action.
280
172
 
281
- ```ruby
282
- Rails.application.config.inspect
283
- "#<Rails::Application::Configuration:0x00000001132b02a0>"
173
+ ```rb
174
+ assert_initializer "mail_interceptors.rb"
284
175
  ```
285
176
 
286
- *Petrik de Heus*
177
+ *Steve Polito*
287
178
 
288
- * Deprecate calling `Rails.application.secrets`.
179
+ * Generate a .devcontainer folder and its contents when creating a new app.
289
180
 
290
- Rails `secrets` have been deprecated in favor of `credentials`.
291
- Calling `Rails.application.secrets` should show a deprecation warning.
181
+ The .devcontainer folder includes everything needed to boot the app and do development in a remote container.
292
182
 
293
- *Petrik de Heus*
294
-
295
- * Store `secret_key_base` in `Rails.config` for local environments.
296
-
297
- Rails `secrets` have been deprecated in favor of `credentials`.
298
- For the local environments the `secret_key_base` is now stored in
299
- `Rails.config.secret_key_base` instead of the soft deprecated
300
- `Rails.application.secrets.secret_key_base`.
301
-
302
- *Petrik de Heus*
303
-
304
- * Enable force_ssl=true in production by default: Force all access to the app over SSL,
305
- use Strict-Transport-Security, and use secure cookies
306
-
307
- *Justin Searls*, *Aaron Patterson*, *Guillermo Iguaran*, *Vinícius Bispo*
308
-
309
- * Add engine's draw paths to application route set, so that the application
310
- can draw route files defined in engine paths.
311
-
312
- *Gannon McGibbon*
183
+ The container setup includes:
184
+ - A redis container for Kredis, ActionCable etc.
185
+ - A database (SQLite, Postgres, MySQL or MariaDB)
186
+ - A Headless chrome container for system tests
187
+ - Active Storage configured to use the local disk and with preview features working
313
188
 
314
- * Support `VISUAL` environment variable for commands which open an editor,
315
- and prefer it over `EDITOR`.
189
+ If any of these options are skipped in the app setup they will not be included in the container configuration.
316
190
 
317
- *Summer ☀️*
191
+ These files can be skipped using the `--skip-devcontainer` option.
318
192
 
319
- * Add engine's `test/fixtures` path to `fixture_paths` in `on_load` hook if
320
- path exists and is under the Rails application root.
193
+ *Andrew Novoselac & Rafael Mendonça França*
321
194
 
322
- *Chris Salzberg*
195
+ * Introduce `SystemTestCase#served_by` for configuring the System Test application server.
323
196
 
324
- * `bin/rails app:template` now runs `bundle install` and any `after_bundle`
325
- blocks after the template is executed.
326
-
327
- *Jonathan Hefner* and *Gerry Caulfield*
328
-
329
- * Enable passing column size to migration generator
330
-
331
- Previously you could pass a limit to the migration generator:
332
-
333
- `rails generate migration CreateAuthor name:text{65535}`
334
-
335
- Now, a size attribute can be passed to the migration generator:
336
-
337
- `rails generate migration CreateAuthor name:text{medium}`
338
-
339
- This generates a migration which includes the size attribute:
197
+ By default this is localhost. This method allows the host and port to be specified manually.
340
198
 
341
199
  ```ruby
342
- class CreateAuthor < ActiveRecord::Migration[7.1]
343
- def change
344
- create_table :authors do |t|
345
- t.text :name, size: :medium
346
- end
347
- end
200
+ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
201
+ served_by host: "testserver", port: 45678
348
202
  end
349
203
  ```
350
204
 
351
- *Josh Broughton*, *Hartley McGuire*
352
-
353
- * Trying to set a config key with the same name of a method now raises:
354
-
355
- ```ruby
356
- config.load_defaults = 7.0
357
- # NoMethodError: Cannot assign to `load_defaults`, it is a configuration method
358
- ```
359
-
360
- *Xavier Noria*
361
-
362
- * Deprecate `secrets:edit/show` and remove `secrets:setup`
363
-
364
- `bin/rails secrets:setup` has been deprecated since Rails 5.2 in favor of
365
- credentials. This command has been removed.
366
-
367
- `bin/rails secrets:show` and `bin/rails secrets:edit` have been deprecated
368
- in favor of credentials.
369
-
370
- Run `bin/rails credentials:help` for more information
205
+ *Andrew Novoselac & Rafael Mendonça França*
371
206
 
372
- *Petrik de Heus*
207
+ * `bin/rails test` will no longer load files named `*_test.rb` if they are located in the `fixtures` folder.
373
208
 
374
- * `bin/rails --help` will now list only framework and plugin commands. Rake
375
- tasks defined in `lib/tasks/*.rake` files will no longer be included. For a
376
- list of those tasks, use `rake -T`.
209
+ *Edouard Chin*
377
210
 
378
- *Jonathan Hefner*
211
+ * Ensure logger tags configured with `config.log_tags` are still active in `request.action_dispatch` handlers.
379
212
 
380
- * Allow calling `bin/rails restart` outside of app directory.
213
+ *KJ Tsanaktsidis*
381
214
 
382
- The following would previously fail with a "No Rakefile found" error.
215
+ * Setup jemalloc in the default Dockerfile for memory optimization.
383
216
 
384
- ```bash
385
- $ blog/bin/rails restart
386
- ```
217
+ *Matt Almeida*, *Jean Boussier*
387
218
 
388
- *Petrik de Heus*
219
+ * Commented out lines in .railsrc file should not be treated as arguments when using
220
+ rails new generator command. Update ARGVScrubber to ignore text after `#` symbols.
389
221
 
390
- * Support prerelease rubies in Gemfile template if RubyGems version is 3.3.13 or higher.
222
+ *Willian Tenfen*
391
223
 
392
- *Yasuo Honda*, *David Rodríguez*
224
+ * Skip CSS when generating APIs.
393
225
 
394
- * Autoloading setup honors root directories manually set by the user.
226
+ *Ruy Rocha*
395
227
 
396
- This is relevant for custom namespaces. For example, if you'd like classes
397
- and modules under `app/services` to be defined in the `Services` namespace
398
- without an extra `app/services/services` directory, this is now enough:
228
+ * Rails console now indicates application name and the current Rails environment:
399
229
 
400
- ```ruby
401
- # config/initializers/autoloading.rb
402
-
403
- # The namespace has to exist.
404
- #
405
- # In this example we define the module on the spot. Could also be created
406
- # elsewhere and its definition loaded here with an ordinary `require`. In
407
- # any case, `push_dir` expects a class or module object.
408
- module Services; end
409
-
410
- Rails.autoloaders.main.push_dir("#{Rails.root}/app/services", namespace: Services)
230
+ ```txt
231
+ my-app(dev)> # for RAILS_ENV=development
232
+ my-app(test)> # for RAILS_ENV=test
233
+ my-app(prod)> # for RAILS_ENV=production
234
+ my-app(my_env)> # for RAILS_ENV=my_env
411
235
  ```
412
236
 
413
- Check the autoloading guide for further details.
414
-
415
- *Xavier Noria*
237
+ The application name is derived from the application's module name from `config/application.rb`.
238
+ For example, `MyApp` will displayed as `my-app` in the prompt.
416
239
 
417
- * Railties now requires the irb gem as a dependency, which means when you install Rails, irb will also
418
- be installed as a gem. Rails will then use the installed version of irb for its console instead of
419
- relying on Ruby's built-in version.
420
- This ensures that Rails has access to the most up-to-date and reliable version of irb for its console.
240
+ Additionally, the environment name will be colorized when the environment is
241
+ `development` (blue), `test` (blue), or `production` (red), if your
242
+ terminal supports it.
421
243
 
422
244
  *Stan Lo*
423
245
 
424
- * Use infinitive form for all rails command descriptions verbs.
246
+ * Ensure `autoload_paths`, `autoload_once_paths`, `eager_load_paths`, and
247
+ `load_paths` only have directories when initialized from engine defaults.
425
248
 
426
- *Petrik de Heus*
427
-
428
- * Credentials commands (e.g. `bin/rails credentials:edit`) now respect
429
- `config.credentials.content_path` and `config.credentials.key_path` when set
430
- in `config/application.rb` or `config/environments/#{Rails.env}.rb`.
431
-
432
- Before:
249
+ Previously, files under the `app` directory could end up there too.
433
250
 
434
- * `bin/rails credentials:edit` ignored `RAILS_ENV`, and would always edit
435
- `config/credentials.yml.enc`.
251
+ *Takumasa Ochi*
436
252
 
437
- * `bin/rails credentials:edit --environment foo` would create and edit
438
- `config/credentials/foo.yml.enc`.
253
+ * Prevent unnecessary application reloads in development.
439
254
 
440
- * If `config.credentials.content_path` or `config.credentials.key_path`
441
- was set, `bin/rails credentials:edit` could not be used to edit the
442
- credentials. Editing credentials required using `bin/rails
443
- encrypted:edit path/to/credentials --key path/to/key`.
255
+ Previously, some files outside autoload paths triggered unnecessary reloads.
256
+ With this fix, application reloads according to `Rails.autoloaders.main.dirs`,
257
+ thereby preventing unnecessary reloads.
444
258
 
445
- After:
259
+ *Takumasa Ochi*
446
260
 
447
- * `bin/rails credentials:edit` will edit the credentials file that the app
448
- would load for the current `RAILS_ENV`.
261
+ * Use `oven-sh/setup-bun` in GitHub CI when generating an app with Bun.
449
262
 
450
- * `bin/rails credentials:edit` respects `config.credentials.content_path`
451
- and `config.credentials.key_path` when set in `config/application.rb`
452
- or `config/environments/#{Rails.env}.rb`.
263
+ *TangRufus*
453
264
 
454
- * `bin/rails credentials:edit --environment foo` will create and edit
455
- `config/credentials/foo.yml.enc` _if_ `config.credentials.content_path`
456
- has not been set for the `foo` environment. Ultimately, it will edit
457
- the credentials file that the app would load for the `foo` environment.
265
+ * Disable `pidfile` generation in the `production` environment.
458
266
 
459
- *Jonathan Hefner*
267
+ *Hans Schnedlitz*
460
268
 
461
- * Add descriptions for non-Rake commands when running `rails -h`.
462
-
463
- *Petrik de Heus*
269
+ * Set `config.action_view.annotate_rendered_view_with_filenames` to `true` in
270
+ the `development` environment.
464
271
 
465
- * Show relevant commands when calling help
272
+ *Adrian Marin*
466
273
 
467
- When running `rails -h` or just `rails` outside a Rails application,
468
- Rails outputs all options for running the `rails new` command. This can be
469
- confusing to users when they probably want to see the common Rails commands.
470
-
471
- Instead, we should always show the common commands when running `rails -h`
472
- inside or outside a Rails application.
473
-
474
- As the relevant commands inside a Rails application differ from the
475
- commands outside an application, the help USAGE file has been split to
476
- show the most relevant commands for the context.
477
-
478
- *Petrik de Heus*
274
+ * Support the `BACKTRACE` environment variable to turn off backtrace cleaning.
479
275
 
480
- * Add Rails::HealthController#show and map it to /up for newly generated applications.
481
- Load balancers and uptime monitors all need a basic endpoint to tell whether the app is up.
482
- This is a good starting point that'll work in many situations.
276
+ Useful for debugging framework code:
483
277
 
484
- *DHH*
485
-
486
- * Only use HostAuthorization middleware if `config.hosts` is not empty
278
+ ```sh
279
+ BACKTRACE=1 bin/rails server
280
+ ```
487
281
 
488
- *Hartley McGuire*
282
+ *Alex Ghiculescu*
489
283
 
490
- * Raise an exception when a `before_action`'s "only" or "except" filter
491
- options reference an action that doesn't exist. This will be enabled by
492
- default but can be overridden via config.
284
+ * Raise `ArgumentError` when reading `config.x.something` with arguments:
493
285
 
494
286
  ```ruby
495
- # config/environments/production.rb
496
- config.action_controller.raise_on_missing_callback_actions = false
287
+ config.x.this_works.this_raises true # raises ArgumentError
497
288
  ```
498
289
 
499
- *Jess Bees*
290
+ *Sean Doyle*
500
291
 
501
- * Use physical processor count as the default Puma worker count in production.
502
- This can be overridden by setting `ENV["WEB_CONCURRENCY"]` or editing the
503
- generated "config/puma.rb" directly.
292
+ * Add default PWA files for manifest and service-worker that are served from `app/views/pwa` and can be dynamically rendered through ERB. Mount these files explicitly at the root with default routes in the generated routes file.
504
293
 
505
294
  *DHH*
506
295
 
507
- * Add Docker files by default to new apps: Dockerfile, .dockerignore, bin/docker-entrypoint.
508
- These files can be skipped with `--skip-docker`. They're intended as a starting point for
509
- a production deploy of the application. Not intended for development (see Docked Rails for that).
510
-
511
- Example:
512
-
513
- ```bash
514
- $ docker build -t app .
515
- $ docker volume create app-storage
516
- $ docker run --rm -it -v app-storage:/rails/storage -p 3000:3000 --env RAILS_MASTER_KEY=<see config/master.key> app
517
- ```
518
-
519
- You can also start a console or a runner from this image:
520
-
521
- ```bash
522
- $ docker run --rm -it -v app-storage:/rails/storage --env RAILS_MASTER_KEY=<see config/master.key> app console
523
- ```
524
-
525
- To create a multi-platform image on Apple Silicon to deploy on AMD or Intel and push to Docker Hub for user/app:
526
-
527
- ```bash
528
- $ docker login -u <user>
529
- $ docker buildx create --use
530
- $ docker buildx build --push --platform=linux/amd64,linux/arm64 -t <user/image> .
531
- ```
532
-
533
- *DHH, Sam Ruby*
534
-
535
- * Add ENV["SECRET_KEY_BASE_DUMMY"] for starting production environment with a generated secret base key,
536
- which can be used to run tasks like `assets:precompile` without making the RAILS_MASTER_KEY available
537
- to the build process.
538
-
539
- Dockerfile layer example:
540
-
541
- ```
542
- RUN SECRET_KEY_BASE_DUMMY=1 bundle exec rails assets:precompile
543
- ```
296
+ * Updated system tests to now use headless Chrome by default for the new applications.
544
297
 
545
298
  *DHH*
546
299
 
547
- * Show descriptions for all commands in Rails help
548
-
549
- When calling `rails help` most commands missed their description. We now
550
- show the same descriptions as shown in `rails -T`.
551
-
552
- *Petrik de Heus*
553
-
554
- * Always generate the storage/ directory with rails new to ensure there's a stable place to
555
- put permanent files, and a single mount point for containers to map. Then default sqlite3 databases
556
- to live there instead of db/, which is only meant for configuration, not data.
300
+ * Add GitHub CI files for Dependabot, Brakeman, RuboCop, and running tests by default. Can be skipped with `--skip-ci`.
557
301
 
558
302
  *DHH*
559
303
 
560
- * Rails console now disables `IRB`'s autocompletion feature in production by default.
561
-
562
- Setting `IRB_USE_AUTOCOMPLETE=true` can override this default.
563
-
564
- *Stan Lo*
565
-
566
- * Add `config.precompile_filter_parameters`, which enables precompilation of
567
- `config.filter_parameters` using `ActiveSupport::ParameterFilter.precompile_filters`.
568
- Precompilation can improve filtering performance, depending on the quantity
569
- and types of filters.
570
-
571
- `config.precompile_filter_parameters` defaults to `true` for
572
- `config.load_defaults 7.1` and above.
573
-
574
- *Jonathan Hefner*
575
-
576
- * Add `after_routes_loaded` hook to `Rails::Railtie::Configuration` for
577
- engines to add a hook to be called after application routes have been
578
- loaded.
579
-
580
- ```ruby
581
- MyEngine.config.after_routes_loaded do
582
- # code that must happen after routes have been loaded
583
- end
584
- ```
585
-
586
- *Chris Salzberg*
587
-
588
- * Send 303 See Other status code back for the destroy action on newly generated
589
- scaffold controllers.
590
-
591
- *Tony Drake*
592
-
593
- * Add `Rails.application.deprecators` as a central point to manage deprecators
594
- for an application.
595
-
596
- Individual deprecators can be added and retrieved from the collection:
597
-
598
- ```ruby
599
- Rails.application.deprecators[:my_gem] = ActiveSupport::Deprecation.new("2.0", "MyGem")
600
- Rails.application.deprecators[:other_gem] = ActiveSupport::Deprecation.new("3.0", "OtherGem")
601
- ```
602
-
603
- And the collection's configuration methods affect all deprecators in the
604
- collection:
304
+ * Add Brakeman by default for static analysis of security vulnerabilities. Allow skipping with `--skip-brakeman option`.
605
305
 
606
- ```ruby
607
- Rails.application.deprecators.debug = true
608
-
609
- Rails.application.deprecators[:my_gem].debug
610
- # => true
611
- Rails.application.deprecators[:other_gem].debug
612
- # => true
613
- ```
614
-
615
- Additionally, all deprecators in the collection can be silenced for the
616
- duration of a given block:
617
-
618
- ```ruby
619
- Rails.application.deprecators.silence do
620
- Rails.application.deprecators[:my_gem].warn # => silenced (no warning)
621
- Rails.application.deprecators[:other_gem].warn # => silenced (no warning)
622
- end
623
- ```
624
-
625
- *Jonathan Hefner*
626
-
627
- * Move dbconsole logic to Active Record connection adapter.
628
-
629
- Instead of hosting the connection logic in the command object, the
630
- database adapter should be responsible for connecting to a console session.
631
- This patch moves #find_cmd_and_exec to the adapter and exposes a new API to
632
- lookup the adapter class without instantiating it.
633
-
634
- *Gannon McGibbon*, *Paarth Madan*
635
-
636
- * Add `Rails.application.message_verifiers` as a central point to configure
637
- and create message verifiers for an application.
638
-
639
- This allows applications to, for example, rotate old `secret_key_base`
640
- values:
641
-
642
- ```ruby
643
- config.before_initialize do |app|
644
- app.message_verifiers.rotate(secret_key_base: "old secret_key_base")
645
- end
646
- ```
647
-
648
- And for libraries to create preconfigured message verifiers:
649
-
650
- ```ruby
651
- ActiveStorage.verifier = Rails.application.message_verifiers["ActiveStorage"]
652
- ```
653
-
654
- *Jonathan Hefner*
655
-
656
- * Support MySQL's ssl-mode option for the dbconsole command.
657
-
658
- Verifying the identity of the database server requires setting the ssl-mode
659
- option to VERIFY_CA or VERIFY_IDENTITY. This option was previously ignored
660
- for the dbconsole command.
661
-
662
- *Petrik de Heus*
663
-
664
- * Delegate application record generator description to orm hooked generator.
665
-
666
- *Gannon McGibbon*
667
-
668
- * Show BCC recipients when present in Action Mailer previews.
669
-
670
- *Akshay Birajdar*
671
-
672
- * Extend `routes --grep` to also filter routes by matching against path.
673
-
674
- Example:
675
-
676
- ```bash
677
- $ bin/rails routes --grep /cats/1
678
- Prefix Verb URI Pattern Controller#Action
679
- cat GET /cats/:id(.:format) cats#show
680
- PATCH /cats/:id(.:format) cats#update
681
- PUT /cats/:id(.:format) cats#update
682
- DELETE /cats/:id(.:format) cats#destroy
683
- ```
306
+ *vipulnsward*
684
307
 
685
- *Orhan Toy*
308
+ * Add RuboCop with rules from `rubocop-rails-omakase` by default. Skip with `--skip-rubocop`.
686
309
 
687
- * Improve `rails runner` output when given a file path that doesn't exist.
310
+ *DHH* and *zzak*
688
311
 
689
- *Tekin Suleyman*
312
+ * Use `bin/rails runner --skip-executor` to not wrap the runner script with an
313
+ Executor.
690
314
 
691
- * `config.allow_concurrency = false` now use a `Monitor` instead of a `Mutex`
315
+ *Ben Sheldon*
692
316
 
693
- This allows to enable `config.active_support.executor_around_test_case` even
694
- when `config.allow_concurrency` is disabled.
695
-
696
- *Jean Boussier*
697
-
698
- * Add `routes --unused` option to detect extraneous routes.
699
-
700
- Example:
701
-
702
- ```bash
703
- $ bin/rails routes --unused
704
-
705
- Found 2 unused routes:
706
-
707
- Prefix Verb URI Pattern Controller#Action
708
- one GET /one(.:format) action#one
709
- two GET /two(.:format) action#two
710
- ```
711
-
712
- *Gannon McGibbon*
713
-
714
- * Add `--parent` option to controller generator to specify parent class of job.
715
-
716
- Example:
717
-
718
- `bin/rails g controller admin/users --parent=admin_controller` generates:
719
-
720
- ```ruby
721
- class Admin::UsersController < AdminController
722
- # ...
723
- end
724
- ```
725
-
726
- *Gannon McGibbon*
727
-
728
- * In-app custom credentials templates are now supported. When a credentials
729
- file does not exist, `rails credentials:edit` will now try to use
730
- `lib/templates/rails/credentials/credentials.yml.tt` to generate the
731
- credentials file, before falling back to the default template.
732
-
733
- This allows e.g. an open-source Rails app (which would not include encrypted
734
- credentials files in its repo) to include a credentials template, so that
735
- users who install the app will get a custom pre-filled credentials file when
736
- they run `rails credentials:edit`.
737
-
738
- *Jonathan Hefner*
739
-
740
- * Except for `dev` and `test` environments, newly generated per-environment
741
- credentials files (e.g. `config/credentials/production.yml.enc`) now include
742
- a `secret_key_base` for convenience, just as `config/credentials.yml.enc`
743
- does.
744
-
745
- *Jonathan Hefner*
746
-
747
- * `--no-*` options now work with the app generator's `--minimal` option, and
748
- are both comprehensive and precise. For example:
749
-
750
- ```bash
751
- $ rails new my_cool_app --minimal
752
- Based on the specified options, the following options will also be activated:
753
-
754
- --skip-active-job [due to --minimal]
755
- --skip-action-mailer [due to --skip-active-job, --minimal]
756
- --skip-active-storage [due to --skip-active-job, --minimal]
757
- --skip-action-mailbox [due to --skip-active-storage, --minimal]
758
- --skip-action-text [due to --skip-active-storage, --minimal]
759
- --skip-javascript [due to --minimal]
760
- --skip-hotwire [due to --skip-javascript, --minimal]
761
- --skip-action-cable [due to --minimal]
762
- --skip-bootsnap [due to --minimal]
763
- --skip-dev-gems [due to --minimal]
764
- --skip-system-test [due to --minimal]
765
-
766
- ...
767
-
768
- $ rails new my_cool_app --minimal --no-skip-active-storage
769
- Based on the specified options, the following options will also be activated:
770
-
771
- --skip-action-mailer [due to --minimal]
772
- --skip-action-mailbox [due to --minimal]
773
- --skip-action-text [due to --minimal]
774
- --skip-javascript [due to --minimal]
775
- --skip-hotwire [due to --skip-javascript, --minimal]
776
- --skip-action-cable [due to --minimal]
777
- --skip-bootsnap [due to --minimal]
778
- --skip-dev-gems [due to --minimal]
779
- --skip-system-test [due to --minimal]
780
-
781
- ...
782
- ```
783
-
784
- *Brad Trick* and *Jonathan Hefner*
785
-
786
- * Add `--skip-dev-gems` option to app generator to skip adding development
787
- gems (like `web-console`) to the Gemfile.
788
-
789
- *Brad Trick*
790
-
791
- * Skip Active Storage and Action Mailer if Active Job is skipped.
792
-
793
- *Étienne Barrié*
794
-
795
- * Correctly check if frameworks are disabled when running app:update.
317
+ * Fix isolated engines to take `ActiveRecord::Base.table_name_prefix` into consideration.
796
318
 
797
- *Étienne Barrié* and *Paulo Barros*
319
+ This will allow for engine defined models, such as inside Active Storage, to respect
320
+ Active Record table name prefix configuration.
798
321
 
799
- * Delegate model generator description to orm hooked generator.
322
+ *Chedli Bourguiba*
800
323
 
801
- *Gannon McGibbon*
324
+ * Fix running `db:system:change` when the app has no Dockerfile.
802
325
 
803
- * Execute `rails runner` scripts inside the executor.
326
+ *Hartley McGuire*
804
327
 
805
- Enables error reporting, query cache, etc.
328
+ * In Action Mailer previews, list inline attachments separately from normal
329
+ attachments.
806
330
 
807
- *Jean Boussier*
331
+ For example, attachments that were previously listed like
808
332
 
809
- * Avoid booting in development then test for test tasks.
333
+ > Attachments: logo.png file1.pdf file2.pdf
810
334
 
811
- Running one of the rails test subtasks (e.g. test:system, test:models) would
812
- go through Rake and cause the app to be booted twice. Now all the test:*
813
- subtasks are defined as Thor tasks and directly load the test environment.
335
+ will now be listed like
814
336
 
815
- *Étienne Barrié*
337
+ > Attachments: file1.pdf file2.pdf (Inline: logo.png)
816
338
 
817
- * Deprecate `Rails::Generators::Testing::Behaviour` in favor of `Rails::Generators::Testing::Behavior`.
339
+ *Christian Schmidt* and *Jonathan Hefner*
818
340
 
819
- *Gannon McGibbon*
341
+ * In mailer preview, only show SMTP-To if it differs from the union of To, Cc and Bcc.
820
342
 
821
- * Allow configuration of logger size for local and test environments
343
+ *Christian Schmidt*
822
344
 
823
- `config.log_file_size`
345
+ * Enable YJIT by default on new applications running Ruby 3.3+.
824
346
 
825
- Defaults to `100` megabytes.
347
+ This can be disabled by setting `Rails.application.config.yjit = false`
826
348
 
827
- *Bernie Chiu*
349
+ *Jean Boussier*, *Rafael Mendonça França*
828
350
 
829
- * Enroll new apps in decrypted diffs of credentials by default. This behavior
830
- can be opted out of with the app generator's `--skip-decrypted-diffs` flag.
351
+ * In Action Mailer previews, show date from message `Date` header if present.
831
352
 
832
- *Jonathan Hefner*
353
+ *Sampat Badhe*
833
354
 
834
- * Support declarative-style test name filters with `bin/rails test`.
355
+ * Exit with non-zero status when the migration generator fails.
835
356
 
836
- This makes it possible to run a declarative-style test such as:
357
+ *Katsuhiko YOSHIDA*
837
358
 
838
- ```ruby
839
- class MyTest < ActiveSupport::TestCase
840
- test "does something" do
841
- # ...
842
- end
843
- end
844
- ```
359
+ * Use numeric UID and GID in Dockerfile template.
845
360
 
846
- Using its declared name:
361
+ The Dockerfile generated by `rails new` sets the default user and group
362
+ by name instead of UID:GID. This can cause the following error in Kubernetes:
847
363
 
848
- ```bash
849
- $ bin/rails test test/my_test.rb -n "does something"
850
364
  ```
851
-
852
- Instead of having to specify its expanded method name:
853
-
854
- ```bash
855
- $ bin/rails test test/my_test.rb -n test_does_something
365
+ container has runAsNonRoot and image has non-numeric user (rails), cannot verify user is non-root
856
366
  ```
857
367
 
858
- *Jonathan Hefner*
859
-
860
- * Add `--js` and `--skip-javascript` options to `rails new`
861
-
862
- `--js` alias to `rails new --javascript ...`
863
-
864
- Same as `-j`, e.g. `rails new --js esbuild ...`
865
-
866
- `--skip-js` alias to `rails new --skip-javascript ...`
867
-
868
- Same as `-J`, e.g. `rails new --skip-js ...`
869
-
870
- *Dorian Marié*
871
-
872
- * Allow relative paths with leading dot slash to be passed to `rails test`.
368
+ This change sets default user and group by their numeric values.
873
369
 
874
- Fix `rails test ./test/model/post_test.rb` to run a single test file.
370
+ *Ivan Fedotov*
875
371
 
876
- *Shouichi Kamiya* and *oljfte*
372
+ * Disallow invalid values for rails new options.
877
373
 
878
- * Deprecate `config.enable_dependency_loading`. This flag addressed a limitation of the `classic` autoloader and has no effect nowadays. To fix this deprecation, please just delete the reference.
374
+ The `--database`, `--asset-pipeline`, `--css`, and `--javascript` options
375
+ for `rails new` take different arguments. This change validates them.
879
376
 
880
- *Xavier Noria*
881
-
882
- * Define `config.enable_reloading` to be `!config.cache_classes` for a more intuitive name. While `config.enable_reloading` and `config.reloading_enabled?` are preferred from now on, `config.cache_classes` is supported for backwards compatibility.
883
-
884
- *Xavier Noria*
885
-
886
- * Add JavaScript dependencies installation on bin/setup
377
+ *Tony Drake*, *Akhil G Krishnan*, *Petrik de Heus*
887
378
 
888
- Add `yarn install` to bin/setup when using esbuild, webpack, or rollout.
379
+ * Conditionally print `$stdout` when invoking `run_generator`.
889
380
 
890
- *Carlos Ribeiro*
381
+ In an effort to improve the developer experience when debugging
382
+ generator tests, we add the ability to conditionally print `$stdout`
383
+ instead of capturing it.
891
384
 
892
- * Use `controller_class_path` in `Rails::Generators::NamedBase#route_url`
385
+ This allows for calls to `binding.irb` and `puts` work as expected.
893
386
 
894
- The `route_url` method now returns the correct path when generating
895
- a namespaced controller with a top-level model using `--model-name`.
896
-
897
- Previously, when running this command:
898
-
899
- ```bash
900
- $ bin/rails generate scaffold_controller Admin/Post --model-name Post
387
+ ```sh
388
+ RAILS_LOG_TO_STDOUT=true ./bin/test test/generators/actions_test.rb
901
389
  ```
902
390
 
903
- the comments above the controller action would look like:
904
-
905
- ``` ruby
906
- # GET /posts
907
- def index
908
- @posts = Post.all
909
- end
910
- ```
911
-
912
- afterwards, they now look like this:
913
-
914
- ``` ruby
915
- # GET /admin/posts
916
- def index
917
- @posts = Post.all
918
- end
919
- ```
920
-
921
- Fixes #44662.
922
-
923
- *Andrew White*
924
-
925
- * No longer add autoloaded paths to `$LOAD_PATH`.
926
-
927
- This means it won't be possible to load them with a manual `require` call, the class or module can be referenced instead.
928
-
929
- Reducing the size of `$LOAD_PATH` speed-up `require` calls for apps not using `bootsnap`, and reduce the
930
- size of the `bootsnap` cache for the others.
931
-
932
- *Jean Boussier*
933
-
934
- * Remove default `X-Download-Options` header
935
-
936
- This header is currently only used by Internet Explorer which
937
- will be discontinued in 2022 and since Rails 7 does not fully
938
- support Internet Explorer this header should not be a default one.
939
-
940
- *Harun Sabljaković*
941
-
942
- * Add .node-version files for Rails apps that use Node.js
943
-
944
- Node version managers that make use of this file:
945
- https://github.com/shadowspawn/node-version-usage#node-version-file-usage
391
+ *Steve Polito*
946
392
 
947
- The generated Dockerfile will use the same node version.
393
+ * Remove the option `config.public_file_server.enabled` from the generators
394
+ for all environments, as the value is the same in all environments.
948
395
 
949
- *Sam Ruby*
396
+ *Adrian Hirt*
950
397
 
951
- Please check [7-0-stable](https://github.com/rails/rails/blob/7-0-stable/railties/CHANGELOG.md) for previous changes.
398
+ Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/railties/CHANGELOG.md) for previous changes.