railties 7.0.8.7 → 7.1.5.1

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +723 -215
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.md +99 -0
  5. data/README.rdoc +4 -4
  6. data/lib/minitest/rails_plugin.rb +63 -0
  7. data/lib/rails/api/task.rb +35 -4
  8. data/lib/rails/app_updater.rb +14 -2
  9. data/lib/rails/application/bootstrap.rb +23 -4
  10. data/lib/rails/application/configuration.rb +190 -69
  11. data/lib/rails/application/default_middleware_stack.rb +8 -2
  12. data/lib/rails/application/dummy_config.rb +19 -0
  13. data/lib/rails/application/finisher.rb +43 -33
  14. data/lib/rails/application.rb +141 -33
  15. data/lib/rails/backtrace_cleaner.rb +5 -3
  16. data/lib/rails/cli.rb +5 -2
  17. data/lib/rails/command/actions.rb +10 -12
  18. data/lib/rails/command/base.rb +55 -53
  19. data/lib/rails/command/environment_argument.rb +32 -16
  20. data/lib/rails/command/helpers/editor.rb +17 -12
  21. data/lib/rails/command.rb +84 -33
  22. data/lib/rails/commands/about/about_command.rb +14 -0
  23. data/lib/rails/commands/application/application_command.rb +2 -0
  24. data/lib/rails/commands/console/console_command.rb +14 -14
  25. data/lib/rails/commands/credentials/USAGE +53 -55
  26. data/lib/rails/commands/credentials/credentials_command/diffing.rb +5 -3
  27. data/lib/rails/commands/credentials/credentials_command.rb +64 -70
  28. data/lib/rails/commands/db/system/change/change_command.rb +2 -1
  29. data/lib/rails/commands/dbconsole/dbconsole_command.rb +25 -115
  30. data/lib/rails/commands/destroy/destroy_command.rb +3 -2
  31. data/lib/rails/commands/dev/dev_command.rb +1 -6
  32. data/lib/rails/commands/encrypted/USAGE +15 -20
  33. data/lib/rails/commands/encrypted/encrypted_command.rb +46 -35
  34. data/lib/rails/commands/gem_help/USAGE +16 -0
  35. data/lib/rails/commands/gem_help/gem_help_command.rb +13 -0
  36. data/lib/rails/commands/generate/generate_command.rb +2 -2
  37. data/lib/rails/commands/help/USAGE +13 -13
  38. data/lib/rails/commands/help/help_command.rb +21 -2
  39. data/lib/rails/commands/initializers/initializers_command.rb +1 -4
  40. data/lib/rails/commands/middleware/middleware_command.rb +17 -0
  41. data/lib/rails/commands/new/new_command.rb +2 -0
  42. data/lib/rails/commands/notes/notes_command.rb +2 -1
  43. data/lib/rails/commands/plugin/plugin_command.rb +2 -0
  44. data/lib/rails/commands/rake/rake_command.rb +25 -22
  45. data/lib/rails/commands/restart/restart_command.rb +14 -0
  46. data/lib/rails/commands/routes/routes_command.rb +13 -1
  47. data/lib/rails/commands/runner/USAGE +14 -12
  48. data/lib/rails/commands/runner/runner_command.rb +32 -20
  49. data/lib/rails/commands/secret/secret_command.rb +13 -0
  50. data/lib/rails/commands/secrets/USAGE +44 -49
  51. data/lib/rails/commands/secrets/secrets_command.rb +20 -38
  52. data/lib/rails/commands/server/server_command.rb +33 -32
  53. data/lib/rails/commands/test/USAGE +14 -0
  54. data/lib/rails/commands/test/test_command.rb +56 -14
  55. data/lib/rails/commands/unused_routes/unused_routes_command.rb +75 -0
  56. data/lib/rails/commands/version/version_command.rb +1 -0
  57. data/lib/rails/configuration.rb +5 -5
  58. data/lib/rails/console/app.rb +1 -4
  59. data/lib/rails/deprecator.rb +7 -0
  60. data/lib/rails/engine/configuration.rb +50 -6
  61. data/lib/rails/engine.rb +49 -21
  62. data/lib/rails/gem_version.rb +4 -4
  63. data/lib/rails/generators/actions.rb +6 -15
  64. data/lib/rails/generators/active_model.rb +28 -14
  65. data/lib/rails/generators/app_base.rb +355 -82
  66. data/lib/rails/generators/app_name.rb +3 -14
  67. data/lib/rails/generators/base.rb +17 -9
  68. data/lib/rails/generators/database.rb +40 -2
  69. data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
  70. data/lib/rails/generators/generated_attribute.rb +12 -0
  71. data/lib/rails/generators/migration.rb +4 -5
  72. data/lib/rails/generators/model_helpers.rb +2 -1
  73. data/lib/rails/generators/rails/app/USAGE +22 -6
  74. data/lib/rails/generators/rails/app/app_generator.rb +85 -64
  75. data/lib/rails/generators/rails/app/templates/Dockerfile.tt +103 -0
  76. data/lib/rails/generators/rails/app/templates/Gemfile.tt +9 -11
  77. data/lib/rails/generators/rails/app/templates/app/views/layouts/mailer.html.erb.tt +1 -1
  78. data/lib/rails/generators/rails/app/templates/bin/setup.tt +10 -1
  79. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +6 -17
  80. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +4 -4
  81. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +3 -3
  82. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +4 -6
  83. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +3 -3
  84. data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
  85. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +12 -2
  86. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +32 -28
  87. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +13 -9
  88. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +2 -0
  89. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +2 -2
  90. data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +1 -1
  91. data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +3 -3
  92. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +280 -0
  93. data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -9
  94. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +11 -13
  95. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +21 -20
  96. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +5 -1
  97. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +6 -4
  98. data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +10 -0
  99. data/lib/rails/generators/rails/app/templates/dockerignore.tt +43 -0
  100. data/lib/rails/generators/rails/app/templates/gitignore.tt +4 -8
  101. data/lib/rails/generators/rails/app/templates/node-version.tt +1 -0
  102. data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +10 -8
  103. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +9 -7
  104. data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
  105. data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +2 -1
  106. data/lib/rails/generators/rails/controller/USAGE +12 -4
  107. data/lib/rails/generators/rails/controller/controller_generator.rb +5 -0
  108. data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -1
  109. data/lib/rails/generators/rails/credentials/credentials_generator.rb +29 -24
  110. data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
  111. data/lib/rails/generators/rails/db/system/change/change_generator.rb +30 -0
  112. data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
  113. data/lib/rails/generators/rails/migration/USAGE +21 -11
  114. data/lib/rails/generators/rails/model/model_generator.rb +4 -0
  115. data/lib/rails/generators/rails/plugin/USAGE +17 -6
  116. data/lib/rails/generators/rails/plugin/plugin_generator.rb +5 -15
  117. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +2 -2
  118. data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
  119. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -17
  120. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -2
  121. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +4 -4
  122. data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
  123. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -1
  124. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +1 -1
  125. data/lib/rails/generators/test_case.rb +2 -2
  126. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +1 -1
  127. data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +4 -1
  128. data/lib/rails/generators.rb +6 -14
  129. data/lib/rails/health_controller.rb +55 -0
  130. data/lib/rails/info.rb +1 -1
  131. data/lib/rails/info_controller.rb +33 -11
  132. data/lib/rails/mailers_controller.rb +15 -5
  133. data/lib/rails/paths.rb +13 -10
  134. data/lib/rails/rack/logger.rb +15 -12
  135. data/lib/rails/rackup/server.rb +15 -0
  136. data/lib/rails/railtie/configuration.rb +14 -1
  137. data/lib/rails/railtie.rb +31 -31
  138. data/lib/rails/ruby_version_check.rb +2 -0
  139. data/lib/rails/source_annotation_extractor.rb +67 -18
  140. data/lib/rails/tasks/engine.rake +8 -8
  141. data/lib/rails/tasks/framework.rake +4 -10
  142. data/lib/rails/tasks/log.rake +1 -1
  143. data/lib/rails/tasks/misc.rake +3 -14
  144. data/lib/rails/tasks/statistics.rake +5 -4
  145. data/lib/rails/tasks/tmp.rake +5 -5
  146. data/lib/rails/tasks/zeitwerk.rake +15 -35
  147. data/lib/rails/tasks.rb +0 -2
  148. data/lib/rails/templates/rails/mailers/email.html.erb +32 -0
  149. data/lib/rails/templates/rails/mailers/index.html.erb +14 -7
  150. data/lib/rails/templates/rails/mailers/mailer.html.erb +11 -5
  151. data/lib/rails/templates/rails/welcome/index.html.erb +1 -0
  152. data/lib/rails/test_help.rb +9 -14
  153. data/lib/rails/test_unit/line_filtering.rb +1 -1
  154. data/lib/rails/test_unit/reporter.rb +6 -2
  155. data/lib/rails/test_unit/runner.rb +36 -18
  156. data/lib/rails/test_unit/test_parser.rb +88 -0
  157. data/lib/rails/test_unit/testing.rake +13 -33
  158. data/lib/rails/testing/maintain_test_schema.rb +16 -0
  159. data/lib/rails/version.rb +1 -1
  160. data/lib/rails/zeitwerk_checker.rb +15 -0
  161. data/lib/rails.rb +15 -15
  162. metadata +64 -27
  163. data/RDOC_MAIN.rdoc +0 -97
  164. data/lib/rails/application/dummy_erb_compiler.rb +0 -18
  165. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +0 -143
  166. data/lib/rails/generators/rails/model/USAGE +0 -113
  167. data/lib/rails/tasks/middleware.rake +0 -9
  168. data/lib/rails/tasks/restart.rake +0 -9
@@ -3,6 +3,7 @@
3
3
  module Rails
4
4
  module Command
5
5
  class VersionCommand < Base # :nodoc:
6
+ desc "version", "Show the Rails version"
6
7
  def perform
7
8
  Rails::Command.invoke :application, [ "--version" ]
8
9
  end
@@ -7,17 +7,17 @@ require "rails/rack"
7
7
 
8
8
  module Rails
9
9
  module Configuration
10
- # MiddlewareStackProxy is a proxy for the Rails middleware stack that allows
10
+ # MiddlewareStackProxy is a proxy for the \Rails middleware stack that allows
11
11
  # you to configure middlewares in your application. It works basically as a
12
12
  # command recorder, saving each command to be applied after initialization
13
13
  # over the default middleware stack, so you can add, swap, or remove any
14
- # middleware in Rails.
14
+ # middleware in \Rails.
15
15
  #
16
16
  # You can add your own middlewares by using the +config.middleware.use+ method:
17
17
  #
18
18
  # config.middleware.use Magical::Unicorns
19
19
  #
20
- # This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
20
+ # This will put the +Magical::Unicorns+ middleware on the end of the stack.
21
21
  # You can use +insert_before+ if you wish to add a middleware before another:
22
22
  #
23
23
  # config.middleware.insert_before Rack::Head, Magical::Unicorns
@@ -34,8 +34,8 @@ module Rails
34
34
  #
35
35
  # config.middleware.move_before ActionDispatch::Flash, Magical::Unicorns
36
36
  #
37
- # This will move the <tt>Magical::Unicorns</tt> middleware before the
38
- # <tt>ActionDispatch::Flash</tt>. You can also move it after:
37
+ # This will move the +Magical::Unicorns+ middleware before the
38
+ # +ActionDispatch::Flash+. You can also move it after:
39
39
  #
40
40
  # config.middleware.move_after ActionDispatch::Flash, Magical::Unicorns
41
41
  #
@@ -9,9 +9,7 @@ module Rails
9
9
  # instance, pass a non-false value as the parameter.
10
10
  def app(create = false)
11
11
  @app_integration_instance = nil if create
12
- @app_integration_instance ||= new_session do |sess|
13
- sess.host! "www.example.com"
14
- end
12
+ @app_integration_instance ||= new_session
15
13
  end
16
14
 
17
15
  # create a new session. If a block is given, the new session will be yielded
@@ -19,7 +17,6 @@ module Rails
19
17
  def new_session
20
18
  app = Rails.application
21
19
  session = ActionDispatch::Integration::Session.new(app)
22
- yield session if block_given?
23
20
 
24
21
  # This makes app.url_for and app.foo_path available in the console
25
22
  session.extend(app.routes.url_helpers)
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rails
4
+ def self.deprecator # :nodoc:
5
+ @deprecator ||= ActiveSupport::Deprecation.new
6
+ end
7
+ end
@@ -9,12 +9,45 @@ module Rails
9
9
  attr_accessor :middleware, :javascript_path
10
10
  attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths
11
11
 
12
+ # An array of custom autoload paths to be added to the ones defined
13
+ # automatically by Rails. These won't be eager loaded, unless you push
14
+ # them to +eager_load_paths+ too, which is recommended.
15
+ #
16
+ # This collection is empty by default, it accepts strings and +Pathname+
17
+ # objects.
18
+ #
19
+ # If you'd like to add +lib+ to it, please see +autoload_lib+.
20
+ attr_reader :autoload_paths
21
+
22
+ # An array of custom autoload once paths. These won't be eager loaded
23
+ # unless you push them to +eager_load_paths+ too, which is recommended.
24
+ #
25
+ # This collection is empty by default, it accepts strings and +Pathname+
26
+ # objects.
27
+ #
28
+ # If you'd like to add +lib+ to it, please see +autoload_lib_once+.
29
+ attr_reader :autoload_once_paths
30
+
31
+ # An array of custom eager load paths to be added to the ones defined
32
+ # automatically by Rails. Anything in this collection is considered to be
33
+ # an autoload path regardless of whether it was added to +autoload_paths+.
34
+ #
35
+ # This collection is empty by default, it accepts strings and +Pathname+
36
+ # objects.
37
+ #
38
+ # If you'd like to add +lib+ to it, please see +autoload_lib+.
39
+ attr_reader :eager_load_paths
40
+
12
41
  def initialize(root = nil)
13
42
  super()
14
43
  @root = root
15
44
  @generators = app_generators.dup
16
45
  @middleware = Rails::Configuration::MiddlewareStackProxy.new
17
46
  @javascript_path = "javascript"
47
+
48
+ @autoload_paths = []
49
+ @autoload_once_paths = []
50
+ @eager_load_paths = []
18
51
  end
19
52
 
20
53
  # Holds generators configuration:
@@ -50,6 +83,9 @@ module Rails
50
83
  paths.add "app/mailers", eager_load: true
51
84
  paths.add "app/views"
52
85
 
86
+ # If you add more lib subdirectories here that should not be managed
87
+ # by the main autoloader, please update the config.autoload_lib call
88
+ # in the template that generates config/application.rb accordingly.
53
89
  paths.add "lib", load_path: true
54
90
  paths.add "lib/assets", glob: "*"
55
91
  paths.add "lib/tasks", glob: "**/*.rake"
@@ -68,6 +104,8 @@ module Rails
68
104
  paths.add "vendor", load_path: true
69
105
  paths.add "vendor/assets", glob: "*"
70
106
 
107
+ paths.add "test/mailers/previews", autoload: true
108
+
71
109
  paths
72
110
  end
73
111
  end
@@ -76,16 +114,22 @@ module Rails
76
114
  @root = paths.path = Pathname.new(value).expand_path
77
115
  end
78
116
 
79
- def eager_load_paths
80
- @eager_load_paths ||= paths.eager_load
117
+ # Private method that adds custom autoload paths to the ones defined by
118
+ # +paths+.
119
+ def all_autoload_paths # :nodoc:
120
+ autoload_paths + paths.autoload_paths
81
121
  end
82
122
 
83
- def autoload_once_paths
84
- @autoload_once_paths ||= paths.autoload_once
123
+ # Private method that adds custom autoload once paths to the ones defined
124
+ # by +paths+.
125
+ def all_autoload_once_paths # :nodoc:
126
+ autoload_once_paths + paths.autoload_once
85
127
  end
86
128
 
87
- def autoload_paths
88
- @autoload_paths ||= paths.autoload_paths
129
+ # Private method that adds custom eager load paths to the ones defined by
130
+ # +paths+.
131
+ def all_eager_load_paths # :nodoc:
132
+ eager_load_paths + paths.eager_load
89
133
  end
90
134
  end
91
135
  end
data/lib/rails/engine.rb CHANGED
@@ -9,13 +9,14 @@ 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
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 Rails::Railtie, so the same
18
- # methods (like <tt>rake_tasks</tt> and +generators+) and configuration
17
+ # Any +Rails::Engine+ is also a Rails::Railtie, so the same
18
+ # methods (like {rake_tasks}[rdoc-ref:Rails::Railtie::rake_tasks] and
19
+ # {generators}[rdoc-ref:Rails::Railtie::generators]) and configuration
19
20
  # options that are available in railties can also be used in engines.
20
21
  #
21
22
  # == Creating an Engine
@@ -116,7 +117,7 @@ module Rails
116
117
  # An engine can also be a Rack application. It can be useful if you have a Rack application that
117
118
  # you would like to provide with some of the +Engine+'s features.
118
119
  #
119
- # To do that, use the +endpoint+ method:
120
+ # To do that, use the ::endpoint method:
120
121
  #
121
122
  # module MyEngine
122
123
  # class Engine < Rails::Engine
@@ -181,7 +182,7 @@ module Rails
181
182
  # it's used as default <tt>:as</tt> option
182
183
  # * rake task for installing migrations <tt>my_engine:install:migrations</tt>
183
184
  #
184
- # Engine name is set by default based on class name. For <tt>MyEngine::Engine</tt> it will be
185
+ # Engine name is set by default based on class name. For +MyEngine::Engine+ it will be
185
186
  # <tt>my_engine_engine</tt>. You can change it manually using the <tt>engine_name</tt> method:
186
187
  #
187
188
  # module MyEngine
@@ -197,7 +198,7 @@ module Rails
197
198
  # named routes from the application will be available to your engine's controllers as well.
198
199
  #
199
200
  # However, sometimes you want to isolate your engine from the application, especially if your engine
200
- # has its own router. To do that, you simply need to call +isolate_namespace+. This method requires
201
+ # has its own router. To do that, you simply need to call ::isolate_namespace. This method requires
201
202
  # you to pass a module where all your controllers, helpers, and models should be nested to:
202
203
  #
203
204
  # module MyEngine
@@ -231,14 +232,14 @@ module Rails
231
232
  # end
232
233
  #
233
234
  # If +MyEngine+ is isolated, the routes above will point to
234
- # <tt>MyEngine::ArticlesController</tt>. You also don't need to use longer
235
+ # +MyEngine::ArticlesController+. You also don't need to use longer
235
236
  # URL helpers like +my_engine_articles_path+. Instead, you should simply use
236
237
  # +articles_path+, like you would do with your main application.
237
238
  #
238
239
  # To make this behavior consistent with other parts of the framework,
239
240
  # isolated engines also have an effect on ActiveModel::Naming. In a
240
- # normal Rails app, when you use a namespaced model such as
241
- # <tt>Namespace::Article</tt>, ActiveModel::Naming will generate
241
+ # normal \Rails app, when you use a namespaced model such as
242
+ # +Namespace::Article+, ActiveModel::Naming will generate
242
243
  # names with the prefix "namespace". In an isolated engine, the prefix will
243
244
  # be omitted in URL helpers and form fields, for convenience.
244
245
  #
@@ -252,7 +253,7 @@ module Rails
252
253
  # Additionally, an isolated engine will set its own name according to its
253
254
  # namespace, so <tt>MyEngine::Engine.engine_name</tt> will return
254
255
  # "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
256
+ # meaning for example that +MyEngine::Article+ will use the
256
257
  # +my_engine_articles+ database table by default.
257
258
  #
258
259
  # == Using Engine's routes outside Engine
@@ -300,7 +301,7 @@ module Rails
300
301
  #
301
302
  # == Isolated engine's helpers
302
303
  #
303
- # Sometimes you may want to isolate engine, but use helpers that are defined for it.
304
+ # Sometimes you may want to isolate an engine, but use helpers that are defined for it.
304
305
  # If you want to share just a few specific helpers you can add them to application's
305
306
  # helpers in ApplicationController:
306
307
  #
@@ -327,7 +328,7 @@ module Rails
327
328
  # To use engine's migrations in application you can use the rake task below, which copies them to
328
329
  # application's dir:
329
330
  #
330
- # rake ENGINE_NAME:install:migrations
331
+ # $ rake ENGINE_NAME:install:migrations
331
332
  #
332
333
  # Note that some of the migrations may be skipped if a migration with the same name already exists
333
334
  # in application. In such a situation you must decide whether to leave that migration or rename the
@@ -395,6 +396,12 @@ module Rails
395
396
 
396
397
  unless mod.respond_to?(:table_name_prefix)
397
398
  define_method(:table_name_prefix) { "#{name}_" }
399
+
400
+ ActiveSupport.on_load(:active_record) do
401
+ mod.singleton_class.redefine_method(:table_name_prefix) do
402
+ "#{ActiveRecord::Base.table_name_prefix}#{name}_"
403
+ end
404
+ end
398
405
  end
399
406
 
400
407
  unless mod.respond_to?(:use_relative_model_naming?)
@@ -450,7 +457,7 @@ module Rails
450
457
  self
451
458
  end
452
459
 
453
- # Load Rails runner and invoke the registered hooks.
460
+ # Load \Rails runner and invoke the registered hooks.
454
461
  # Check Rails::Railtie.runner for more info.
455
462
  def load_runner(app = self)
456
463
  run_runner_blocks(app)
@@ -465,7 +472,7 @@ module Rails
465
472
  self
466
473
  end
467
474
 
468
- # Load Rails generators and invoke the registered hooks.
475
+ # Load \Rails generators and invoke the registered hooks.
469
476
  # Check Rails::Railtie.generators for more info.
470
477
  def load_generators(app = self)
471
478
  require "rails/generators"
@@ -494,8 +501,7 @@ module Rails
494
501
  def helpers
495
502
  @helpers ||= begin
496
503
  helpers = Module.new
497
- all = ActionController::Base.all_helpers_from_path(helpers_paths)
498
- ActionController::Base.modules_for_helpers(all).each do |mod|
504
+ AbstractController::Helpers.helper_modules_from_paths(helpers_paths).each do |mod|
499
505
  helpers.include(mod)
500
506
  end
501
507
  helpers
@@ -579,7 +585,7 @@ module Rails
579
585
  end
580
586
 
581
587
  initializer :set_eager_load_paths, before: :bootstrap_hook do
582
- ActiveSupport::Dependencies._eager_load_paths.merge(config.eager_load_paths)
588
+ ActiveSupport::Dependencies._eager_load_paths.merge(config.all_eager_load_paths)
583
589
  config.eager_load_paths.freeze
584
590
  end
585
591
 
@@ -587,6 +593,7 @@ module Rails
587
593
  routing_paths = paths["config/routes.rb"].existent
588
594
  external_paths = self.paths["config/routes"].paths
589
595
  routes.draw_paths.concat(external_paths)
596
+ app.routes.draw_paths.concat(external_paths)
590
597
 
591
598
  if routes? || routing_paths.any?
592
599
  app.routes_reloader.paths.unshift(*routing_paths)
@@ -609,6 +616,22 @@ module Rails
609
616
  end
610
617
  end
611
618
 
619
+ initializer :add_mailer_preview_paths do
620
+ previews = paths["test/mailers/previews"].existent
621
+ unless previews.empty?
622
+ ActiveSupport.on_load(:action_mailer) { self.preview_paths |= previews }
623
+ end
624
+ end
625
+
626
+ initializer :add_fixture_paths do
627
+ next if is_a?(Rails::Application)
628
+
629
+ fixtures = config.root.join("test", "fixtures")
630
+ if fixtures_in_root_and_not_in_vendor?(fixtures)
631
+ ActiveSupport.on_load(:active_record_fixtures) { self.fixture_paths |= ["#{fixtures}/"] }
632
+ end
633
+ end
634
+
612
635
  initializer :prepend_helpers_path do |app|
613
636
  if !isolated? || (app == self)
614
637
  app.config.helpers_paths.unshift(*paths["app/helpers"].existent)
@@ -689,14 +712,14 @@ module Rails
689
712
  end
690
713
 
691
714
  def _all_autoload_once_paths
692
- config.autoload_once_paths.uniq
715
+ config.all_autoload_once_paths.uniq
693
716
  end
694
717
 
695
718
  def _all_autoload_paths
696
719
  @_all_autoload_paths ||= begin
697
- autoload_paths = config.autoload_paths
698
- autoload_paths += config.eager_load_paths
699
- autoload_paths -= config.autoload_once_paths
720
+ autoload_paths = config.all_autoload_paths
721
+ autoload_paths += config.all_eager_load_paths
722
+ autoload_paths -= config.all_autoload_once_paths
700
723
  autoload_paths.uniq
701
724
  end
702
725
  end
@@ -712,6 +735,11 @@ module Rails
712
735
  end
713
736
  end
714
737
 
738
+ def fixtures_in_root_and_not_in_vendor?(fixtures)
739
+ fixtures.exist? && fixtures.to_s.start_with?(Rails.root.to_s) &&
740
+ !fixtures.to_s.start_with?(Rails.root.join("vendor").to_s)
741
+ end
742
+
715
743
  def build_request(env)
716
744
  env.merge!(env_config)
717
745
  req = ActionDispatch::Request.new env
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rails
4
- # Returns the currently loaded version of 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
10
  MAJOR = 7
11
- MINOR = 0
12
- TINY = 8
13
- PRE = "7"
11
+ MINOR = 1
12
+ TINY = 5
13
+ PRE = "1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -162,7 +162,7 @@ module Rails
162
162
  end
163
163
  end
164
164
 
165
- # Adds configuration code to a Rails runtime environment.
165
+ # Adds configuration code to a \Rails runtime environment.
166
166
  #
167
167
  # By default, adds code inside the +Application+ class in
168
168
  # +config/application.rb+ so that it applies to all environments.
@@ -349,7 +349,7 @@ module Rails
349
349
  # ==== Options
350
350
  #
351
351
  # [+:env+]
352
- # The Rails environment in which to run the task. Defaults to
352
+ # The \Rails environment in which to run the task. Defaults to
353
353
  # <tt>ENV["RAILS_ENV"] || "development"</tt>.
354
354
  #
355
355
  # [+:abort_on_failure+]
@@ -365,7 +365,7 @@ module Rails
365
365
  execute_command :rake, command, options
366
366
  end
367
367
 
368
- # Runs the specified Rails command.
368
+ # Runs the specified \Rails command.
369
369
  #
370
370
  # rails_command "db:migrate"
371
371
  # rails_command "db:migrate", env: "production"
@@ -376,7 +376,7 @@ module Rails
376
376
  # ==== Options
377
377
  #
378
378
  # [+:env+]
379
- # The Rails environment in which to run the command. Defaults to
379
+ # The \Rails environment in which to run the command. Defaults to
380
380
  # <tt>ENV["RAILS_ENV"] || "development"</tt>.
381
381
  #
382
382
  # [+:abort_on_failure+]
@@ -402,7 +402,7 @@ module Rails
402
402
  end
403
403
  end
404
404
 
405
- # Make an entry in Rails routing file <tt>config/routes.rb</tt>
405
+ # Make an entry in \Rails routing file <tt>config/routes.rb</tt>
406
406
  #
407
407
  # route "root 'welcome#index'"
408
408
  # route "root 'admin#index'", namespace: :admin
@@ -468,16 +468,7 @@ module Rails
468
468
  abort_on_failure: options[:abort_on_failure],
469
469
  }
470
470
 
471
- in_root { run("#{sudo}#{extify(executor)} #{command}", config) }
472
- end
473
-
474
- # Add an extension to the given name based on the platform.
475
- def extify(name) # :doc:
476
- if Gem.win_platform?
477
- "#{name}.bat"
478
- else
479
- name
480
- end
471
+ in_root { run("#{sudo}#{Shellwords.escape Gem.ruby} bin/#{executor} #{command}", config) }
481
472
  end
482
473
 
483
474
  # Always returns value in double quotes.
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rails
4
4
  module Generators
5
- # ActiveModel is a class to be implemented by each ORM to allow Rails to
5
+ # ActiveModel is a class to be implemented by each ORM to allow \Rails to
6
6
  # generate customized controller code.
7
7
  #
8
8
  # The API has the same methods as ActiveRecord, but each method returns a
@@ -32,21 +32,27 @@ module Rails
32
32
  @name = name
33
33
  end
34
34
 
35
- # GET index
35
+ # Used for:
36
+ #
37
+ # * GET +index+
36
38
  def self.all(klass)
37
39
  "#{klass}.all"
38
40
  end
39
41
 
40
- # GET show
41
- # GET edit
42
- # PATCH/PUT update
43
- # DELETE destroy
42
+ # Used for:
43
+ #
44
+ # * GET +show+
45
+ # * GET +edit+
46
+ # * PATCH / PUT +update+
47
+ # * DELETE +destroy+
44
48
  def self.find(klass, params = nil)
45
49
  "#{klass}.find(#{params})"
46
50
  end
47
51
 
48
- # GET new
49
- # POST create
52
+ # Used for:
53
+ #
54
+ # * GET +new+
55
+ # * POST +create+
50
56
  def self.build(klass, params = nil)
51
57
  if params
52
58
  "#{klass}.new(#{params})"
@@ -55,25 +61,33 @@ module Rails
55
61
  end
56
62
  end
57
63
 
58
- # POST create
64
+ # Used for:
65
+ #
66
+ # * POST +create+
59
67
  def save
60
68
  "#{name}.save"
61
69
  end
62
70
 
63
- # PATCH/PUT update
71
+ # Used for:
72
+ #
73
+ # * PATCH / PUT +update+
64
74
  def update(params = nil)
65
75
  "#{name}.update(#{params})"
66
76
  end
67
77
 
68
- # POST create
69
- # PATCH/PUT update
78
+ # Used for:
79
+ #
80
+ # * POST +create+
81
+ # * PATCH / PUT +update+
70
82
  def errors
71
83
  "#{name}.errors"
72
84
  end
73
85
 
74
- # DELETE destroy
86
+ # Used for:
87
+ #
88
+ # * DELETE +destroy+
75
89
  def destroy
76
- "#{name}.destroy"
90
+ "#{name}.destroy!"
77
91
  end
78
92
  end
79
93
  end