railties 7.1.3.4 → 7.2.0.beta2

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