railties 6.1.6 → 7.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +626 -259
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.md +99 -0
  5. data/README.rdoc +5 -6
  6. data/lib/minitest/rails_plugin.rb +64 -1
  7. data/lib/rails/all.rb +0 -1
  8. data/lib/rails/api/task.rb +35 -4
  9. data/lib/rails/app_updater.rb +9 -6
  10. data/lib/rails/application/bootstrap.rb +41 -7
  11. data/lib/rails/application/configuration.rb +262 -88
  12. data/lib/rails/application/default_middleware_stack.rb +29 -4
  13. data/lib/rails/application/dummy_config.rb +19 -0
  14. data/lib/rails/application/finisher.rb +89 -124
  15. data/lib/rails/application/routes_reloader.rb +8 -0
  16. data/lib/rails/application.rb +200 -125
  17. data/lib/rails/application_controller.rb +3 -3
  18. data/lib/rails/autoloaders/inflector.rb +21 -0
  19. data/lib/rails/autoloaders.rb +42 -42
  20. data/lib/rails/backtrace_cleaner.rb +1 -1
  21. data/lib/rails/cli.rb +5 -2
  22. data/lib/rails/code_statistics.rb +2 -2
  23. data/lib/rails/code_statistics_calculator.rb +10 -1
  24. data/lib/rails/command/actions.rb +10 -12
  25. data/lib/rails/command/base.rb +61 -45
  26. data/lib/rails/command/behavior.rb +1 -1
  27. data/lib/rails/command/environment_argument.rb +33 -17
  28. data/lib/rails/command/helpers/editor.rb +17 -12
  29. data/lib/rails/command.rb +90 -36
  30. data/lib/rails/commands/about/about_command.rb +14 -0
  31. data/lib/rails/commands/application/application_command.rb +2 -0
  32. data/lib/rails/commands/console/console_command.rb +17 -13
  33. data/lib/rails/commands/credentials/USAGE +53 -53
  34. data/lib/rails/commands/credentials/credentials_command/diffing.rb +31 -19
  35. data/lib/rails/commands/credentials/credentials_command.rb +67 -69
  36. data/lib/rails/commands/db/system/change/change_command.rb +2 -1
  37. data/lib/rails/commands/dbconsole/dbconsole_command.rb +26 -117
  38. data/lib/rails/commands/destroy/destroy_command.rb +3 -2
  39. data/lib/rails/commands/dev/dev_command.rb +1 -6
  40. data/lib/rails/commands/encrypted/USAGE +15 -20
  41. data/lib/rails/commands/encrypted/encrypted_command.rb +46 -35
  42. data/lib/rails/commands/gem_help/USAGE +16 -0
  43. data/lib/rails/commands/gem_help/gem_help_command.rb +13 -0
  44. data/lib/rails/commands/generate/generate_command.rb +2 -2
  45. data/lib/rails/commands/help/USAGE +15 -14
  46. data/lib/rails/commands/help/help_command.rb +21 -2
  47. data/lib/rails/commands/initializers/initializers_command.rb +1 -4
  48. data/lib/rails/commands/middleware/middleware_command.rb +17 -0
  49. data/lib/rails/commands/new/new_command.rb +2 -0
  50. data/lib/rails/commands/notes/notes_command.rb +2 -1
  51. data/lib/rails/commands/plugin/plugin_command.rb +2 -0
  52. data/lib/rails/commands/rake/rake_command.rb +25 -22
  53. data/lib/rails/commands/restart/restart_command.rb +14 -0
  54. data/lib/rails/commands/routes/routes_command.rb +13 -1
  55. data/lib/rails/commands/runner/USAGE +14 -12
  56. data/lib/rails/commands/runner/runner_command.rb +34 -21
  57. data/lib/rails/commands/secret/secret_command.rb +13 -0
  58. data/lib/rails/commands/secrets/USAGE +44 -49
  59. data/lib/rails/commands/secrets/secrets_command.rb +20 -38
  60. data/lib/rails/commands/server/server_command.rb +33 -30
  61. data/lib/rails/commands/test/USAGE +14 -0
  62. data/lib/rails/commands/test/test_command.rb +56 -14
  63. data/lib/rails/commands/unused_routes/unused_routes_command.rb +75 -0
  64. data/lib/rails/commands/version/version_command.rb +1 -0
  65. data/lib/rails/configuration.rb +23 -28
  66. data/lib/rails/console/app.rb +1 -4
  67. data/lib/rails/console/helpers.rb +2 -2
  68. data/lib/rails/deprecator.rb +7 -0
  69. data/lib/rails/engine/configuration.rb +53 -9
  70. data/lib/rails/engine.rb +63 -48
  71. data/lib/rails/gem_version.rb +3 -3
  72. data/lib/rails/generators/actions/create_migration.rb +2 -4
  73. data/lib/rails/generators/actions.rb +231 -73
  74. data/lib/rails/generators/active_model.rb +28 -14
  75. data/lib/rails/generators/app_base.rb +476 -176
  76. data/lib/rails/generators/app_name.rb +3 -14
  77. data/lib/rails/generators/base.rb +24 -20
  78. data/lib/rails/generators/database.rb +39 -1
  79. data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
  80. data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +2 -0
  81. data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +8 -8
  82. data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +8 -4
  83. data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +11 -28
  84. data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +7 -3
  85. data/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +17 -0
  86. data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +8 -17
  87. data/lib/rails/generators/erb.rb +1 -1
  88. data/lib/rails/generators/generated_attribute.rb +57 -9
  89. data/lib/rails/generators/migration.rb +2 -7
  90. data/lib/rails/generators/model_helpers.rb +3 -2
  91. data/lib/rails/generators/named_base.rb +13 -13
  92. data/lib/rails/generators/rails/app/USAGE +22 -6
  93. data/lib/rails/generators/rails/app/app_generator.rb +113 -114
  94. data/lib/rails/generators/rails/app/templates/Dockerfile.tt +103 -0
  95. data/lib/rails/generators/rails/app/templates/Gemfile.tt +43 -53
  96. data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css.tt +2 -2
  97. data/lib/rails/generators/rails/app/templates/app/mailers/application_mailer.rb.tt +2 -2
  98. data/lib/rails/generators/rails/app/templates/app/models/application_record.rb.tt +1 -1
  99. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +3 -9
  100. data/lib/rails/generators/rails/app/templates/app/views/layouts/mailer.html.erb.tt +1 -1
  101. data/lib/rails/generators/rails/app/templates/bin/rails.tt +1 -4
  102. data/lib/rails/generators/rails/app/templates/bin/rake.tt +0 -3
  103. data/lib/rails/generators/rails/app/templates/bin/setup.tt +16 -12
  104. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +6 -18
  105. data/lib/rails/generators/rails/app/templates/config/boot.rb.tt +1 -1
  106. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +2 -2
  107. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +3 -3
  108. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +7 -7
  109. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +5 -5
  110. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +3 -3
  111. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +2 -2
  112. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +7 -9
  113. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +4 -4
  114. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +5 -5
  115. data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
  116. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +16 -12
  117. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +38 -61
  118. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +14 -15
  119. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +3 -5
  120. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +21 -28
  121. data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +3 -3
  122. data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +3 -1
  123. data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb.tt +4 -4
  124. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +283 -0
  125. data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -9
  126. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +13 -15
  127. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +12 -20
  128. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +8 -1
  129. data/lib/rails/generators/rails/app/templates/config/storage.yml.tt +5 -5
  130. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +6 -4
  131. data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +10 -0
  132. data/lib/rails/generators/rails/app/templates/dockerignore.tt +43 -0
  133. data/lib/rails/generators/rails/app/templates/gitattributes.tt +0 -5
  134. data/lib/rails/generators/rails/app/templates/gitignore.tt +7 -9
  135. data/lib/rails/generators/rails/app/templates/node-version.tt +1 -0
  136. data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +10 -8
  137. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +10 -8
  138. data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
  139. data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +2 -1
  140. data/lib/rails/generators/rails/controller/USAGE +12 -4
  141. data/lib/rails/generators/rails/controller/controller_generator.rb +6 -2
  142. data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -5
  143. data/lib/rails/generators/rails/credentials/credentials_generator.rb +29 -24
  144. data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
  145. data/lib/rails/generators/rails/db/system/change/change_generator.rb +31 -1
  146. data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
  147. data/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt +1 -1
  148. data/lib/rails/generators/rails/migration/USAGE +21 -11
  149. data/lib/rails/generators/rails/model/model_generator.rb +4 -0
  150. data/lib/rails/generators/rails/plugin/USAGE +17 -6
  151. data/lib/rails/generators/rails/plugin/plugin_generator.rb +69 -30
  152. data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +7 -3
  153. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +9 -31
  154. data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
  155. data/lib/rails/generators/rails/plugin/templates/README.md.tt +1 -1
  156. data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +2 -2
  157. data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +0 -3
  158. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +5 -20
  159. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -7
  160. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +2 -2
  161. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/version.rb.tt +1 -1
  162. data/lib/rails/generators/rails/plugin/templates/rails/boot.rb.tt +2 -2
  163. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +6 -11
  164. data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
  165. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -20
  166. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +1 -1
  167. data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -5
  168. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +6 -10
  169. data/lib/rails/generators/resource_helpers.rb +2 -2
  170. data/lib/rails/generators/test_case.rb +2 -2
  171. data/lib/rails/generators/test_unit/generator/templates/generator_test.rb.tt +1 -1
  172. data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +2 -2
  173. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +4 -4
  174. data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +5 -5
  175. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +7 -7
  176. data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +9 -11
  177. data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +7 -5
  178. data/lib/rails/generators.rb +14 -29
  179. data/lib/rails/health_controller.rb +55 -0
  180. data/lib/rails/info.rb +2 -2
  181. data/lib/rails/info_controller.rb +31 -13
  182. data/lib/rails/initializable.rb +1 -1
  183. data/lib/rails/mailers_controller.rb +17 -9
  184. data/lib/rails/paths.rb +14 -11
  185. data/lib/rails/rack/logger.rb +16 -15
  186. data/lib/rails/rackup/server.rb +15 -0
  187. data/lib/rails/railtie/configuration.rb +15 -3
  188. data/lib/rails/railtie.rb +54 -31
  189. data/lib/rails/ruby_version_check.rb +5 -3
  190. data/lib/rails/secrets.rb +10 -8
  191. data/lib/rails/source_annotation_extractor.rb +68 -19
  192. data/lib/rails/tasks/engine.rake +8 -8
  193. data/lib/rails/tasks/framework.rake +4 -12
  194. data/lib/rails/tasks/log.rake +1 -1
  195. data/lib/rails/tasks/misc.rake +3 -14
  196. data/lib/rails/tasks/statistics.rake +8 -5
  197. data/lib/rails/tasks/tmp.rake +13 -6
  198. data/lib/rails/tasks/yarn.rake +8 -9
  199. data/lib/rails/tasks/zeitwerk.rake +14 -42
  200. data/lib/rails/tasks.rb +0 -2
  201. data/lib/rails/templates/layouts/application.html.erb +15 -0
  202. data/lib/rails/templates/rails/mailers/email.html.erb +45 -11
  203. data/lib/rails/templates/rails/mailers/index.html.erb +14 -7
  204. data/lib/rails/templates/rails/mailers/mailer.html.erb +11 -5
  205. data/lib/rails/templates/rails/welcome/index.html.erb +65 -48
  206. data/lib/rails/test_help.rb +13 -14
  207. data/lib/rails/test_unit/line_filtering.rb +1 -1
  208. data/lib/rails/test_unit/railtie.rb +0 -4
  209. data/lib/rails/test_unit/reporter.rb +6 -2
  210. data/lib/rails/test_unit/runner.rb +45 -20
  211. data/lib/rails/test_unit/test_parser.rb +88 -0
  212. data/lib/rails/test_unit/testing.rake +18 -43
  213. data/lib/rails/testing/maintain_test_schema.rb +16 -0
  214. data/lib/rails/version.rb +1 -1
  215. data/lib/rails/welcome_controller.rb +1 -0
  216. data/lib/rails/zeitwerk_checker.rb +15 -0
  217. data/lib/rails.rb +26 -15
  218. metadata +74 -42
  219. data/RDOC_MAIN.rdoc +0 -97
  220. data/lib/rails/.DS_Store +0 -0
  221. data/lib/rails/application/dummy_erb_compiler.rb +0 -18
  222. data/lib/rails/command/spellchecker.rb +0 -57
  223. data/lib/rails/generators/css/assets/assets_generator.rb +0 -15
  224. data/lib/rails/generators/css/assets/templates/stylesheet.css +0 -4
  225. data/lib/rails/generators/css/scaffold/scaffold_generator.rb +0 -18
  226. data/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +0 -6
  227. data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +0 -5
  228. data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +0 -23
  229. data/lib/rails/generators/rails/app/templates/bin/spring.tt +0 -13
  230. data/lib/rails/generators/rails/app/templates/bin/yarn.tt +0 -16
  231. data/lib/rails/generators/rails/app/templates/config/initializers/application_controller_renderer.rb.tt +0 -8
  232. data/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb.tt +0 -8
  233. data/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb.tt +0 -5
  234. data/lib/rails/generators/rails/app/templates/config/initializers/mime_types.rb.tt +0 -4
  235. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_1.rb.tt +0 -67
  236. data/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +0 -16
  237. data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +0 -6
  238. data/lib/rails/generators/rails/app/templates/package.json.tt +0 -11
  239. data/lib/rails/generators/rails/assets/USAGE +0 -16
  240. data/lib/rails/generators/rails/assets/assets_generator.rb +0 -26
  241. data/lib/rails/generators/rails/assets/templates/stylesheet.css +0 -4
  242. data/lib/rails/generators/rails/model/USAGE +0 -113
  243. data/lib/rails/generators/rails/scaffold/templates/scaffold.css +0 -80
  244. data/lib/rails/tasks/middleware.rake +0 -9
  245. data/lib/rails/tasks/restart.rake +0 -9
data/lib/rails/engine.rb CHANGED
@@ -9,12 +9,12 @@ require "pathname"
9
9
  require "thread"
10
10
 
11
11
  module Rails
12
- # <tt>Rails::Engine</tt> allows you to wrap a specific Rails application or subset of
12
+ # +Rails::Engine+ allows you to wrap a specific \Rails application or subset of
13
13
  # functionality and share it with other applications or within a larger packaged application.
14
- # Every <tt>Rails::Application</tt> is just an engine, which allows for simple
14
+ # Every Rails::Application is just an engine, which allows for simple
15
15
  # feature and application sharing.
16
16
  #
17
- # Any <tt>Rails::Engine</tt> is also a <tt>Rails::Railtie</tt>, so the same
17
+ # Any +Rails::Engine+ is also a Rails::Railtie, so the same
18
18
  # methods (like <tt>rake_tasks</tt> and +generators+) and configuration
19
19
  # options that are available in railties can also be used in engines.
20
20
  #
@@ -31,9 +31,9 @@ module Rails
31
31
  # end
32
32
  #
33
33
  # Then ensure that this file is loaded at the top of your <tt>config/application.rb</tt>
34
- # (or in your +Gemfile+) and it will automatically load models, controllers and helpers
34
+ # (or in your +Gemfile+), and it will automatically load models, controllers, and helpers
35
35
  # inside +app+, load routes at <tt>config/routes.rb</tt>, load locales at
36
- # <tt>config/locales/*</tt>, and load tasks at <tt>lib/tasks/*</tt>.
36
+ # <tt>config/locales/**/*</tt>, and load tasks at <tt>lib/tasks/**/*</tt>.
37
37
  #
38
38
  # == Configuration
39
39
  #
@@ -181,7 +181,7 @@ module Rails
181
181
  # it's used as default <tt>:as</tt> option
182
182
  # * rake task for installing migrations <tt>my_engine:install:migrations</tt>
183
183
  #
184
- # Engine name is set by default based on class name. For <tt>MyEngine::Engine</tt> it will be
184
+ # Engine name is set by default based on class name. For +MyEngine::Engine+ it will be
185
185
  # <tt>my_engine_engine</tt>. You can change it manually using the <tt>engine_name</tt> method:
186
186
  #
187
187
  # module MyEngine
@@ -192,13 +192,13 @@ module Rails
192
192
  #
193
193
  # == Isolated Engine
194
194
  #
195
- # Normally when you create controllers, helpers and models inside an engine, they are treated
195
+ # Normally when you create controllers, helpers, and models inside an engine, they are treated
196
196
  # as if they were created inside the application itself. This means that all helpers and
197
197
  # named routes from the application will be available to your engine's controllers as well.
198
198
  #
199
199
  # However, sometimes you want to isolate your engine from the application, especially if your engine
200
200
  # has its own router. To do that, you simply need to call +isolate_namespace+. This method requires
201
- # you to pass a module where all your controllers, helpers and models should be nested to:
201
+ # you to pass a module where all your controllers, helpers, and models should be nested to:
202
202
  #
203
203
  # module MyEngine
204
204
  # class Engine < Rails::Engine
@@ -231,14 +231,14 @@ module Rails
231
231
  # end
232
232
  #
233
233
  # If +MyEngine+ is isolated, the routes above will point to
234
- # <tt>MyEngine::ArticlesController</tt>. You also don't need to use longer
234
+ # +MyEngine::ArticlesController+. You also don't need to use longer
235
235
  # URL helpers like +my_engine_articles_path+. Instead, you should simply use
236
236
  # +articles_path+, like you would do with your main application.
237
237
  #
238
238
  # To make this behavior consistent with other parts of the framework,
239
- # isolated engines also have an effect on <tt>ActiveModel::Naming</tt>. In a
240
- # normal Rails app, when you use a namespaced model such as
241
- # <tt>Namespace::Article</tt>, <tt>ActiveModel::Naming</tt> will generate
239
+ # isolated engines also have an effect on ActiveModel::Naming. In a
240
+ # normal \Rails app, when you use a namespaced model such as
241
+ # +Namespace::Article+, ActiveModel::Naming will generate
242
242
  # names with the prefix "namespace". In an isolated engine, the prefix will
243
243
  # be omitted in URL helpers and form fields, for convenience.
244
244
  #
@@ -252,7 +252,7 @@ module Rails
252
252
  # Additionally, an isolated engine will set its own name according to its
253
253
  # namespace, so <tt>MyEngine::Engine.engine_name</tt> will return
254
254
  # "my_engine". It will also set +MyEngine.table_name_prefix+ to "my_engine_",
255
- # meaning for example that <tt>MyEngine::Article</tt> will use the
255
+ # meaning for example that +MyEngine::Article+ will use the
256
256
  # +my_engine_articles+ database table by default.
257
257
  #
258
258
  # == Using Engine's routes outside Engine
@@ -300,7 +300,7 @@ module Rails
300
300
  #
301
301
  # == Isolated engine's helpers
302
302
  #
303
- # Sometimes you may want to isolate engine, but use helpers that are defined for it.
303
+ # Sometimes you may want to isolate an engine, but use helpers that are defined for it.
304
304
  # If you want to share just a few specific helpers you can add them to application's
305
305
  # helpers in ApplicationController:
306
306
  #
@@ -442,7 +442,7 @@ module Rails
442
442
  end
443
443
 
444
444
  # Load console and invoke the registered hooks.
445
- # Check <tt>Rails::Railtie.console</tt> for more info.
445
+ # Check Rails::Railtie.console for more info.
446
446
  def load_console(app = self)
447
447
  require "rails/console/app"
448
448
  require "rails/console/helpers"
@@ -450,23 +450,23 @@ module Rails
450
450
  self
451
451
  end
452
452
 
453
- # Load Rails runner and invoke the registered hooks.
454
- # Check <tt>Rails::Railtie.runner</tt> for more info.
453
+ # Load \Rails runner and invoke the registered hooks.
454
+ # Check Rails::Railtie.runner for more info.
455
455
  def load_runner(app = self)
456
456
  run_runner_blocks(app)
457
457
  self
458
458
  end
459
459
 
460
- # Load Rake, railties tasks and invoke the registered hooks.
461
- # Check <tt>Rails::Railtie.rake_tasks</tt> for more info.
460
+ # Load Rake and railties tasks, and invoke the registered hooks.
461
+ # Check Rails::Railtie.rake_tasks for more info.
462
462
  def load_tasks(app = self)
463
463
  require "rake"
464
464
  run_tasks_blocks(app)
465
465
  self
466
466
  end
467
467
 
468
- # Load Rails generators and invoke the registered hooks.
469
- # Check <tt>Rails::Railtie.generators</tt> for more info.
468
+ # Load \Rails generators and invoke the registered hooks.
469
+ # Check Rails::Railtie.generators for more info.
470
470
  def load_generators(app = self)
471
471
  require "rails/generators"
472
472
  run_generators_blocks(app)
@@ -475,24 +475,15 @@ module Rails
475
475
  end
476
476
 
477
477
  # Invoke the server registered hooks.
478
- # Check <tt>Rails::Railtie.server</tt> for more info.
478
+ # Check Rails::Railtie.server for more info.
479
479
  def load_server(app = self)
480
480
  run_server_blocks(app)
481
481
  self
482
482
  end
483
483
 
484
484
  def eager_load!
485
- # Already done by Zeitwerk::Loader.eager_load_all. We need this guard to
486
- # easily provide a compatible API for both zeitwerk and classic modes.
487
- return if Rails.autoloaders.zeitwerk_enabled?
488
-
489
- config.eager_load_paths.each do |load_path|
490
- # Starts after load_path plus a slash, ends before ".rb".
491
- relname_range = (load_path.to_s.length + 1)...-3
492
- Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
493
- require_dependency file[relname_range]
494
- end
495
- end
485
+ # Already done by Zeitwerk::Loader.eager_load_all. By now, we leave the
486
+ # method as a no-op for backwards compatibility.
496
487
  end
497
488
 
498
489
  def railties
@@ -503,8 +494,7 @@ module Rails
503
494
  def helpers
504
495
  @helpers ||= begin
505
496
  helpers = Module.new
506
- all = ActionController::Base.all_helpers_from_path(helpers_paths)
507
- ActionController::Base.modules_for_helpers(all).each do |mod|
497
+ AbstractController::Helpers.helper_modules_from_paths(helpers_paths).each do |mod|
508
498
  helpers.include(mod)
509
499
  end
510
500
  helpers
@@ -579,11 +569,6 @@ module Rails
579
569
  $LOAD_PATH.uniq!
580
570
  end
581
571
 
582
- # Set the paths from which Rails will automatically load source files,
583
- # and the load_once paths.
584
- #
585
- # This needs to be an initializer, since it needs to run once
586
- # per engine and get the engine as a block parameter.
587
572
  initializer :set_autoload_paths, before: :bootstrap_hook do
588
573
  ActiveSupport::Dependencies.autoload_paths.unshift(*_all_autoload_paths)
589
574
  ActiveSupport::Dependencies.autoload_once_paths.unshift(*_all_autoload_once_paths)
@@ -593,7 +578,7 @@ module Rails
593
578
  end
594
579
 
595
580
  initializer :set_eager_load_paths, before: :bootstrap_hook do
596
- ActiveSupport::Dependencies._eager_load_paths.merge(config.eager_load_paths)
581
+ ActiveSupport::Dependencies._eager_load_paths.merge(config.all_eager_load_paths)
597
582
  config.eager_load_paths.freeze
598
583
  end
599
584
 
@@ -601,6 +586,7 @@ module Rails
601
586
  routing_paths = paths["config/routes.rb"].existent
602
587
  external_paths = self.paths["config/routes"].paths
603
588
  routes.draw_paths.concat(external_paths)
589
+ app.routes.draw_paths.concat(external_paths)
604
590
 
605
591
  if routes? || routing_paths.any?
606
592
  app.routes_reloader.paths.unshift(*routing_paths)
@@ -623,6 +609,22 @@ module Rails
623
609
  end
624
610
  end
625
611
 
612
+ initializer :add_mailer_preview_paths do
613
+ previews = paths["test/mailers/previews"].existent
614
+ unless previews.empty?
615
+ ActiveSupport.on_load(:action_mailer) { self.preview_paths |= previews }
616
+ end
617
+ end
618
+
619
+ initializer :add_fixture_paths do
620
+ next if is_a?(Rails::Application)
621
+
622
+ fixtures = config.root.join("test", "fixtures")
623
+ if fixtures_in_root_and_not_in_vendor?(fixtures)
624
+ ActiveSupport.on_load(:active_record_fixtures) { self.fixture_paths |= ["#{fixtures}/"] }
625
+ end
626
+ end
627
+
626
628
  initializer :prepend_helpers_path do |app|
627
629
  if !isolated? || (app == self)
628
630
  app.config.helpers_paths.unshift(*paths["app/helpers"].existent)
@@ -665,12 +667,12 @@ module Rails
665
667
  end
666
668
  end
667
669
 
668
- def routes? #:nodoc:
670
+ def routes? # :nodoc:
669
671
  @routes
670
672
  end
671
673
 
672
674
  protected
673
- def run_tasks_blocks(*) #:nodoc:
675
+ def run_tasks_blocks(*) # :nodoc:
674
676
  super
675
677
  paths["lib/tasks"].existent.sort.each { |ext| load(ext) }
676
678
  end
@@ -686,7 +688,7 @@ module Rails
686
688
  paths["db/migrate"].existent.any?
687
689
  end
688
690
 
689
- def self.find_root_with_flag(flag, root_path, default = nil) #:nodoc:
691
+ def self.find_root_with_flag(flag, root_path, default = nil) # :nodoc:
690
692
  while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/#{flag}")
691
693
  parent = File.dirname(root_path)
692
694
  root_path = parent != root_path && parent
@@ -703,21 +705,34 @@ module Rails
703
705
  end
704
706
 
705
707
  def _all_autoload_once_paths
706
- config.autoload_once_paths
708
+ config.all_autoload_once_paths.uniq
707
709
  end
708
710
 
709
711
  def _all_autoload_paths
710
- @_all_autoload_paths ||= (config.autoload_paths + config.eager_load_paths + config.autoload_once_paths).uniq
712
+ @_all_autoload_paths ||= begin
713
+ autoload_paths = config.all_autoload_paths
714
+ autoload_paths += config.all_eager_load_paths
715
+ autoload_paths -= config.all_autoload_once_paths
716
+ autoload_paths.uniq
717
+ end
711
718
  end
712
719
 
713
720
  def _all_load_paths(add_autoload_paths_to_load_path)
714
721
  @_all_load_paths ||= begin
715
- load_paths = config.paths.load_paths
716
- load_paths += _all_autoload_paths if add_autoload_paths_to_load_path
722
+ load_paths = config.paths.load_paths
723
+ if add_autoload_paths_to_load_path
724
+ load_paths += _all_autoload_paths
725
+ load_paths += _all_autoload_once_paths
726
+ end
717
727
  load_paths.uniq
718
728
  end
719
729
  end
720
730
 
731
+ def fixtures_in_root_and_not_in_vendor?(fixtures)
732
+ fixtures.exist? && fixtures.to_s.start_with?(Rails.root.to_s) &&
733
+ !fixtures.to_s.start_with?(Rails.root.join("vendor").to_s)
734
+ end
735
+
721
736
  def build_request(env)
722
737
  env.merge!(env_config)
723
738
  req = ActionDispatch::Request.new env
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rails
4
- # Returns the version of the currently loaded Rails as a <tt>Gem::Version</tt>
4
+ # Returns the currently loaded version of \Rails as a +Gem::Version+.
5
5
  def self.gem_version
6
6
  Gem::Version.new VERSION::STRING
7
7
  end
8
8
 
9
9
  module VERSION
10
- MAJOR = 6
10
+ MAJOR = 7
11
11
  MINOR = 1
12
- TINY = 6
12
+ TINY = 2
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -6,7 +6,7 @@ require "thor/actions"
6
6
  module Rails
7
7
  module Generators
8
8
  module Actions
9
- class CreateMigration < Thor::Actions::CreateFile #:nodoc:
9
+ class CreateMigration < Thor::Actions::CreateFile # :nodoc:
10
10
  def migration_dir
11
11
  File.dirname(@destination)
12
12
  end
@@ -39,10 +39,8 @@ module Rails
39
39
  end
40
40
 
41
41
  def existing_migration
42
- @existing_migration ||= begin
43
- @base.class.migration_exists?(migration_dir, migration_file_name) ||
42
+ @existing_migration ||= @base.class.migration_exists?(migration_dir, migration_file_name) ||
44
43
  File.exist?(@destination) && @destination
45
- end
46
44
  end
47
45
  alias :exists? :existing_migration
48
46