railties 7.1.3.4 → 7.2.0

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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +177 -742
  3. data/lib/minitest/rails_plugin.rb +5 -2
  4. data/lib/rails/all.rb +1 -3
  5. data/lib/rails/api/task.rb +6 -4
  6. data/lib/rails/application/bootstrap.rb +5 -6
  7. data/lib/rails/application/configuration.rb +73 -38
  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 +15 -86
  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/boot/boot_command.rb +14 -0
  16. data/lib/rails/commands/console/console_command.rb +2 -21
  17. data/lib/rails/commands/console/irb_console.rb +137 -0
  18. data/lib/rails/commands/credentials/credentials_command.rb +2 -2
  19. data/lib/rails/commands/dbconsole/dbconsole_command.rb +21 -30
  20. data/lib/rails/commands/devcontainer/devcontainer_command.rb +39 -0
  21. data/lib/rails/commands/rake/rake_command.rb +1 -1
  22. data/lib/rails/commands/runner/runner_command.rb +14 -3
  23. data/lib/rails/commands/server/server_command.rb +5 -3
  24. data/lib/rails/commands/test/test_command.rb +2 -0
  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 +5 -5
  30. data/lib/rails/gem_version.rb +3 -3
  31. data/lib/rails/generators/app_base.rb +70 -49
  32. data/lib/rails/generators/base.rb +5 -1
  33. data/lib/rails/generators/database.rb +227 -69
  34. data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +2 -0
  35. data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +2 -0
  36. data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +2 -0
  37. data/lib/rails/generators/generated_attribute.rb +26 -1
  38. data/lib/rails/generators/migration.rb +3 -3
  39. data/lib/rails/generators/rails/app/app_generator.rb +53 -24
  40. data/lib/rails/generators/rails/app/templates/Dockerfile.tt +22 -15
  41. data/lib/rails/generators/rails/app/templates/Gemfile.tt +16 -16
  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 +5 -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/filter_parameter_logging.rb.tt +1 -1
  58. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_2.rb.tt +70 -0
  59. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +24 -26
  60. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +4 -0
  61. data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +5 -0
  62. data/lib/rails/generators/rails/app/templates/dockerignore.tt +13 -0
  63. data/lib/rails/generators/rails/app/templates/github/ci.yml.tt +138 -0
  64. data/lib/rails/generators/rails/app/templates/github/dependabot.yml +12 -0
  65. data/lib/rails/generators/rails/app/templates/gitignore.tt +3 -3
  66. data/lib/rails/generators/rails/app/templates/public/406-unsupported-browser.html +66 -0
  67. data/lib/rails/generators/rails/app/templates/public/icon.png +0 -0
  68. data/lib/rails/generators/rails/app/templates/public/icon.svg +3 -0
  69. data/lib/rails/generators/rails/app/templates/rubocop.yml.tt +8 -0
  70. data/lib/rails/generators/rails/app/templates/test/application_system_test_case.rb.tt +1 -1
  71. data/lib/rails/generators/rails/controller/controller_generator.rb +1 -1
  72. data/lib/rails/generators/rails/db/system/change/change_generator.rb +131 -20
  73. data/lib/rails/generators/rails/devcontainer/devcontainer_generator.rb +166 -0
  74. data/lib/rails/generators/rails/devcontainer/templates/devcontainer/Dockerfile.tt +3 -0
  75. data/lib/rails/generators/rails/devcontainer/templates/devcontainer/compose.yaml.tt +47 -0
  76. data/lib/rails/generators/rails/devcontainer/templates/devcontainer/devcontainer.json.tt +37 -0
  77. data/lib/rails/generators/rails/migration/migration_generator.rb +4 -0
  78. data/lib/rails/generators/rails/plugin/plugin_generator.rb +38 -7
  79. data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +2 -2
  80. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +5 -1
  81. data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +2 -0
  82. data/lib/rails/generators/rails/plugin/templates/bin/rubocop.tt +7 -0
  83. data/lib/rails/generators/rails/plugin/templates/github/ci.yml.tt +103 -0
  84. data/lib/rails/generators/rails/plugin/templates/github/dependabot.yml +12 -0
  85. data/lib/rails/generators/rails/plugin/templates/rubocop.yml.tt +8 -0
  86. data/lib/rails/generators/rails/plugin/templates/test/application_system_test_case.rb.tt +1 -1
  87. data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb.tt +6 -4
  88. data/lib/rails/generators/test_unit/mailer/templates/preview.rb.tt +3 -2
  89. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +15 -1
  90. data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +2 -2
  91. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +2 -2
  92. data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +2 -0
  93. data/lib/rails/generators/test_unit/system/templates/application_system_test_case.rb.tt +1 -1
  94. data/lib/rails/generators/testing/assertions.rb +20 -0
  95. data/lib/rails/generators/testing/behavior.rb +7 -6
  96. data/lib/rails/generators.rb +1 -1
  97. data/lib/rails/health_controller.rb +1 -1
  98. data/lib/rails/info.rb +2 -2
  99. data/lib/rails/mailers_controller.rb +14 -1
  100. data/lib/rails/paths.rb +2 -2
  101. data/lib/rails/pwa_controller.rb +15 -0
  102. data/lib/rails/rack/logger.rb +15 -7
  103. data/lib/rails/railtie/configurable.rb +2 -2
  104. data/lib/rails/railtie.rb +2 -3
  105. data/lib/rails/tasks/framework.rake +0 -26
  106. data/lib/rails/tasks/tmp.rake +1 -1
  107. data/lib/rails/templates/layouts/application.html.erb +1 -1
  108. data/lib/rails/templates/rails/mailers/email.html.erb +12 -8
  109. data/lib/rails/templates/rails/welcome/index.html.erb +4 -2
  110. data/lib/rails/test_help.rb +2 -4
  111. data/lib/rails/test_unit/reporter.rb +8 -2
  112. data/lib/rails/test_unit/runner.rb +26 -2
  113. data/lib/rails/test_unit/test_parser.rb +45 -0
  114. data/lib/rails.rb +7 -4
  115. metadata +42 -32
  116. data/lib/rails/app_updater.rb +0 -40
  117. data/lib/rails/commands/secrets/USAGE +0 -61
  118. data/lib/rails/commands/secrets/secrets_command.rb +0 -47
  119. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +0 -68
  120. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +0 -54
  121. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +0 -70
  122. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +0 -24
  123. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +0 -62
  124. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +0 -53
  125. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +0 -284
  126. data/lib/rails/generators/rails/app/templates/public/apple-touch-icon-precomposed.png +0 -0
  127. data/lib/rails/generators/rails/app/templates/public/apple-touch-icon.png +0 -0
  128. data/lib/rails/generators/rails/app/templates/public/favicon.ico +0 -0
  129. data/lib/rails/ruby_version_check.rb +0 -17
  130. 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 (August 09, 2024) ##
2
2
 
3
- * No changes.
4
-
5
-
6
- ## Rails 7.1.3.3 (May 16, 2024) ##
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.
3
+ * The new `bin/rails boot` command boots the application and exits. Supports the
4
+ standard `-e/--environment` options.
56
5
 
57
6
  *Xavier Noria*
58
7
 
59
- ## Rails 7.1.1 (October 11, 2023) ##
60
-
61
- * Ensures the Rails generated Dockerfile uses correct ruby version and matches Gemfile.
8
+ * Create a Dev Container Generator that generates a Dev Container setup based on the current configuration
9
+ of the application. Usage:
62
10
 
63
- *Abhay Nikam*
11
+ `bin/rails devcontainer`
64
12
 
13
+ *Andrew Novoselac*
65
14
 
66
- ## Rails 7.1.0 (October 05, 2023) ##
15
+ * Add Rubocop and GitHub Actions to plugin generator.
16
+ This can be skipped using --skip-rubocop and --skip-ci.
67
17
 
68
- * No changes.
18
+ *Chris Oliver*
69
19
 
20
+ * Remove support for `oracle`, `sqlserver` and JRuby specific database adapters from the
21
+ `rails new` and `rails db:system:change` commands.
70
22
 
71
- ## Rails 7.1.0.rc2 (October 01, 2023) ##
23
+ The supported options are `sqlite3`, `mysql`, `postgresql` and `trilogy`.
72
24
 
73
- * Always set the Rails logger to be an instance of `ActiveSupport::BroadcastLogger`.
25
+ *Andrew Novoselac*
74
26
 
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.
27
+ * Add options to `bin/rails app:update`.
84
28
 
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
- ```
29
+ `bin/rails app:update` now supports the same generic options that generators do:
96
30
 
97
- *Petrik de Heus*
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
98
35
 
36
+ *Étienne Barrié*
99
37
 
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
- ```
131
-
132
- In practice, this means that new 7.1 applications autoload from `lib` out of the box.
133
-
134
- *Xavier Noria*
135
-
136
- * Add an option to start rails console in sandbox mode by default
137
-
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.
141
-
142
- Note that this option is ignored when rails environment is development
143
- or test.
144
-
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*
229
-
230
- * Deprecate calling `Rails.application.secrets`.
107
+ *Steve Polito*
231
108
 
232
- Rails `secrets` have been deprecated in favor of `credentials`.
233
- Calling `Rails.application.secrets` should show a deprecation warning.
109
+ * Generate a .devcontainer folder and its contents when creating a new app.
234
110
 
235
- *Petrik de Heus*
111
+ The .devcontainer folder includes everything needed to boot the app and do development in a remote container.
236
112
 
237
- * Store `secret_key_base` in `Rails.config` for local environments.
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
238
118
 
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`.
119
+ If any of these options are skipped in the app setup they will not be included in the container configuration.
243
120
 
244
- *Petrik de Heus*
121
+ These files can be skipped using the `--skip-devcontainer` option.
245
122
 
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
123
+ *Andrew Novoselac & Rafael Mendonça França*
248
124
 
249
- *Justin Searls*, *Aaron Patterson*, *Guillermo Iguaran*, *Vinícius Bispo*
125
+ * Introduce `SystemTestCase#served_by` for configuring the System Test application server.
250
126
 
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*
294
-
295
- * Trying to set a config key with the same name of a method now raises:
296
-
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`.
135
+ *Andrew Novoselac & Rafael Mendonça França*
319
136
 
320
- *Jonathan Hefner*
137
+ * `bin/rails test` will no longer load files named `*_test.rb` if they are located in the `fixtures` folder.
321
138
 
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.
356
-
357
- *Xavier Noria*
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.
358
169
 
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
- ```
626
-
627
- *Orhan Toy*
234
+ * Add Brakeman by default for static analysis of security vulnerabilities. Allow skipping with `--skip-brakeman option`.
628
235
 
629
- * Improve `rails runner` output when given a file path that doesn't exist.
236
+ *vipulnsward*
630
237
 
631
- *Tekin Suleyman*
238
+ * Add RuboCop with rules from `rubocop-rails-omakase` by default. Skip with `--skip-rubocop`.
632
239
 
633
- * `config.allow_concurrency = false` now use a `Monitor` instead of a `Mutex`
240
+ *DHH* and *zzak*
634
241
 
635
- This allows to enable `config.active_support.executor_around_test_case` even
636
- when `config.allow_concurrency` is disabled.
242
+ * Use `bin/rails runner --skip-executor` to not wrap the runner script with an
243
+ Executor.
637
244
 
638
- *Jean Boussier*
245
+ *Ben Sheldon*
639
246
 
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*
298
+ This change sets default user and group by their numeric values.
801
299
 
802
- * Add `--js` and `--skip-javascript` options to `rails new`
300
+ *Ivan Fedotov*
803
301
 
804
- `--js` alias to `rails new --javascript ...`
302
+ * Disallow invalid values for rails new options.
805
303
 
806
- Same as `-j`, e.g. `rails new --js esbuild ...`
304
+ The `--database`, `--asset-pipeline`, `--css`, and `--javascript` options
305
+ for `rails new` take different arguments. This change validates them.
807
306
 
808
- `--skip-js` alias to `rails new --skip-javascript ...`
307
+ *Tony Drake*, *Akhil G Krishnan*, *Petrik de Heus*
809
308
 
810
- Same as `-J`, e.g. `rails new --skip-js ...`
309
+ * Conditionally print `$stdout` when invoking `run_generator`.
811
310
 
812
- *Dorian Marié*
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.
813
314
 
814
- * Allow relative paths with leading dot slash to be passed to `rails test`.
315
+ This allows for calls to `binding.irb` and `puts` work as expected.
815
316
 
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
829
-
830
- Add `yarn install` to bin/setup when using esbuild, webpack, or rollout.
831
-
832
- *Carlos Ribeiro*
833
-
834
- * Use `controller_class_path` in `Rails::Generators::NamedBase#route_url`
835
-
836
- The `route_url` method now returns the correct path when generating
837
- a namespaced controller with a top-level model using `--model-name`.
838
-
839
- Previously, when running this command:
840
-
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
- ```
853
-
854
- afterwards, they now look like this:
855
-
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.