railties 6.0.0 → 7.1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +699 -245
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.md +99 -0
- data/README.rdoc +7 -8
- data/lib/minitest/rails_plugin.rb +80 -2
- data/lib/rails/all.rb +0 -1
- data/lib/rails/api/task.rb +37 -5
- data/lib/rails/app_updater.rb +9 -6
- data/lib/rails/application/bootstrap.rb +52 -14
- data/lib/rails/application/configuration.rb +327 -86
- data/lib/rails/application/default_middleware_stack.rb +33 -7
- data/lib/rails/application/dummy_config.rb +19 -0
- data/lib/rails/application/finisher.rb +94 -113
- data/lib/rails/application/routes_reloader.rb +17 -3
- data/lib/rails/application.rb +258 -201
- data/lib/rails/application_controller.rb +3 -4
- data/lib/rails/autoloaders/inflector.rb +21 -0
- data/lib/rails/autoloaders.rb +42 -42
- data/lib/rails/backtrace_cleaner.rb +13 -8
- data/lib/rails/cli.rb +5 -2
- data/lib/rails/code_statistics.rb +6 -4
- data/lib/rails/code_statistics_calculator.rb +16 -7
- data/lib/rails/command/actions.rb +10 -12
- data/lib/rails/command/base.rb +66 -46
- data/lib/rails/command/behavior.rb +3 -3
- data/lib/rails/command/environment_argument.rb +33 -17
- data/lib/rails/command/helpers/editor.rb +17 -12
- data/lib/rails/command.rb +90 -32
- data/lib/rails/commands/about/about_command.rb +14 -0
- data/lib/rails/commands/application/application_command.rb +2 -0
- data/lib/rails/commands/console/console_command.rb +17 -13
- data/lib/rails/commands/credentials/USAGE +54 -39
- data/lib/rails/commands/credentials/credentials_command/diffing.rb +53 -0
- data/lib/rails/commands/credentials/credentials_command.rb +83 -60
- data/lib/rails/commands/db/system/change/change_command.rb +8 -2
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +39 -124
- data/lib/rails/commands/destroy/destroy_command.rb +3 -2
- data/lib/rails/commands/dev/dev_command.rb +1 -6
- data/lib/rails/commands/encrypted/USAGE +15 -20
- data/lib/rails/commands/encrypted/encrypted_command.rb +46 -35
- data/lib/rails/commands/gem_help/USAGE +16 -0
- data/lib/rails/commands/gem_help/gem_help_command.rb +13 -0
- data/lib/rails/commands/generate/generate_command.rb +3 -3
- data/lib/rails/commands/help/USAGE +15 -14
- data/lib/rails/commands/help/help_command.rb +21 -2
- data/lib/rails/commands/initializers/initializers_command.rb +1 -4
- data/lib/rails/commands/middleware/middleware_command.rb +17 -0
- data/lib/rails/commands/new/new_command.rb +2 -0
- data/lib/rails/commands/notes/notes_command.rb +5 -14
- data/lib/rails/commands/plugin/plugin_command.rb +2 -0
- data/lib/rails/commands/rake/rake_command.rb +27 -23
- data/lib/rails/commands/restart/restart_command.rb +14 -0
- data/lib/rails/commands/routes/routes_command.rb +13 -1
- data/lib/rails/commands/runner/USAGE +14 -12
- data/lib/rails/commands/runner/runner_command.rb +34 -21
- data/lib/rails/commands/secret/secret_command.rb +13 -0
- data/lib/rails/commands/secrets/USAGE +44 -43
- data/lib/rails/commands/secrets/secrets_command.rb +20 -38
- data/lib/rails/commands/server/server_command.rb +40 -64
- data/lib/rails/commands/test/USAGE +14 -0
- data/lib/rails/commands/test/test_command.rb +58 -16
- data/lib/rails/commands/unused_routes/unused_routes_command.rb +75 -0
- data/lib/rails/commands/version/version_command.rb +1 -0
- data/lib/rails/configuration.rb +53 -23
- data/lib/rails/console/app.rb +1 -4
- data/lib/rails/console/helpers.rb +2 -2
- data/lib/rails/deprecator.rb +7 -0
- data/lib/rails/engine/configuration.rb +54 -9
- data/lib/rails/engine/updater.rb +1 -1
- data/lib/rails/engine.rb +105 -81
- data/lib/rails/gem_version.rb +5 -5
- data/lib/rails/generators/actions/create_migration.rb +9 -5
- data/lib/rails/generators/actions.rb +275 -97
- data/lib/rails/generators/active_model.rb +28 -14
- data/lib/rails/generators/app_base.rb +487 -165
- data/lib/rails/generators/app_name.rb +3 -14
- data/lib/rails/generators/base.rb +42 -31
- data/lib/rails/generators/database.rb +41 -4
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +0 -1
- data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
- data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +2 -1
- data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +11 -11
- data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +8 -4
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +11 -28
- data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +7 -3
- data/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +17 -0
- data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +8 -17
- data/lib/rails/generators/erb.rb +1 -2
- data/lib/rails/generators/generated_attribute.rb +60 -19
- data/lib/rails/generators/migration.rb +4 -8
- data/lib/rails/generators/model_helpers.rb +29 -4
- data/lib/rails/generators/named_base.rb +15 -15
- data/lib/rails/generators/rails/app/USAGE +23 -6
- data/lib/rails/generators/rails/app/app_generator.rb +151 -80
- data/lib/rails/generators/rails/app/templates/Dockerfile.tt +103 -0
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +44 -54
- data/lib/rails/generators/rails/app/templates/Rakefile.tt +1 -1
- data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css.tt +2 -2
- data/lib/rails/generators/rails/app/templates/app/mailers/application_mailer.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/app/models/application_record.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +4 -9
- data/lib/rails/generators/rails/app/templates/app/views/layouts/mailer.html.erb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/bin/rails.tt +3 -3
- data/lib/rails/generators/rails/app/templates/bin/rake.tt +2 -2
- data/lib/rails/generators/rails/app/templates/bin/setup.tt +19 -15
- data/lib/rails/generators/rails/app/templates/config/application.rb.tt +18 -23
- data/lib/rails/generators/rails/app/templates/config/boot.rb.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +5 -6
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +12 -11
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +17 -16
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +5 -5
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +12 -11
- data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +12 -11
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +17 -18
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +4 -4
- data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +14 -13
- data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
- data/lib/rails/generators/rails/app/templates/config/environment.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +32 -14
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +42 -55
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +27 -15
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +3 -5
- data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +21 -28
- data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +6 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb.tt +4 -4
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +284 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +13 -0
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +13 -15
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +17 -20
- data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +8 -1
- data/lib/rails/generators/rails/app/templates/config/storage.yml.tt +5 -5
- data/lib/rails/generators/rails/app/templates/config.ru.tt +2 -1
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +7 -5
- data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +10 -0
- data/lib/rails/generators/rails/app/templates/dockerignore.tt +43 -0
- data/lib/rails/generators/rails/app/templates/gitattributes.tt +9 -0
- data/lib/rails/generators/rails/app/templates/gitignore.tt +12 -9
- data/lib/rails/generators/rails/app/templates/node-version.tt +1 -0
- data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +10 -8
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +13 -11
- data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
- data/lib/rails/generators/rails/benchmark/USAGE +19 -0
- data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +30 -0
- data/lib/rails/generators/rails/benchmark/templates/benchmark.rb.tt +15 -0
- data/lib/rails/generators/rails/controller/USAGE +13 -5
- data/lib/rails/generators/rails/controller/controller_generator.rb +7 -42
- data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -5
- data/lib/rails/generators/rails/credentials/credentials_generator.rb +30 -25
- data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
- data/lib/rails/generators/rails/db/system/change/change_generator.rb +31 -1
- data/lib/rails/generators/rails/encrypted_file/encrypted_file_generator.rb +6 -2
- data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
- data/lib/rails/generators/rails/generator/USAGE +2 -2
- data/lib/rails/generators/rails/generator/generator_generator.rb +0 -1
- data/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt +1 -1
- data/lib/rails/generators/rails/generator/templates/USAGE.tt +1 -1
- data/lib/rails/generators/rails/helper/USAGE +2 -3
- data/lib/rails/generators/rails/integration_test/USAGE +2 -2
- data/lib/rails/generators/rails/migration/USAGE +22 -12
- data/lib/rails/generators/rails/model/model_generator.rb +4 -0
- data/lib/rails/generators/rails/plugin/USAGE +17 -6
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +86 -46
- data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +15 -20
- data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +10 -39
- data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/README.md.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/Rakefile.tt +4 -18
- data/lib/rails/generators/rails/plugin/templates/app/controllers/%namespaced_name%/application_controller.rb.tt +0 -1
- data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +0 -3
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +7 -22
- data/lib/rails/generators/rails/plugin/templates/gitignore.tt +10 -14
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/version.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%.rb.tt +1 -0
- data/lib/rails/generators/rails/plugin/templates/rails/boot.rb.tt +3 -3
- data/lib/rails/generators/rails/plugin/templates/test/%namespaced_name%_test.rb.tt +4 -4
- data/lib/rails/generators/rails/plugin/templates/test/integration/navigation_test.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +6 -14
- data/lib/rails/generators/rails/resource/USAGE +4 -4
- data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
- data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +2 -27
- data/lib/rails/generators/rails/scaffold/USAGE +5 -5
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -20
- data/lib/rails/generators/rails/scaffold_controller/USAGE +2 -2
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +7 -2
- data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +2 -6
- data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +7 -11
- data/lib/rails/generators/rails/system_test/USAGE +2 -2
- data/lib/rails/generators/rails/task/USAGE +3 -3
- data/lib/rails/generators/resource_helpers.rb +2 -2
- data/lib/rails/generators/test_case.rb +3 -3
- data/lib/rails/generators/test_unit/controller/controller_generator.rb +2 -0
- data/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt +3 -3
- data/lib/rails/generators/test_unit/generator/generator_generator.rb +0 -1
- data/lib/rails/generators/test_unit/generator/templates/generator_test.rb.tt +3 -3
- data/lib/rails/generators/test_unit/integration/integration_generator.rb +0 -1
- data/lib/rails/generators/test_unit/integration/templates/integration_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/job/templates/unit_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +3 -3
- data/lib/rails/generators/test_unit/model/templates/unit_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +4 -5
- data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +6 -6
- data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +8 -8
- data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +9 -11
- data/lib/rails/generators/testing/assertions.rb +2 -2
- data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +8 -7
- data/lib/rails/generators.rb +43 -45
- data/lib/rails/health_controller.rb +55 -0
- data/lib/rails/info.rb +4 -4
- data/lib/rails/info_controller.rb +30 -13
- data/lib/rails/initializable.rb +1 -1
- data/lib/rails/mailers_controller.rb +18 -9
- data/lib/rails/paths.rb +28 -19
- data/lib/rails/rack/logger.rb +17 -17
- data/lib/rails/rackup/server.rb +15 -0
- data/lib/rails/railtie/configurable.rb +0 -1
- data/lib/rails/railtie/configuration.rb +15 -3
- data/lib/rails/railtie.rb +80 -37
- data/lib/rails/ruby_version_check.rb +5 -3
- data/lib/rails/secrets.rb +14 -9
- data/lib/rails/source_annotation_extractor.rb +69 -34
- data/lib/rails/tasks/engine.rake +8 -11
- data/lib/rails/tasks/framework.rake +4 -6
- data/lib/rails/tasks/log.rake +1 -1
- data/lib/rails/tasks/misc.rake +4 -15
- data/lib/rails/tasks/statistics.rake +9 -6
- data/lib/rails/tasks/tmp.rake +13 -6
- data/lib/rails/tasks/yarn.rake +17 -6
- data/lib/rails/tasks/zeitwerk.rake +16 -41
- data/lib/rails/tasks.rb +0 -6
- data/lib/rails/templates/layouts/application.html.erb +15 -0
- data/lib/rails/templates/rails/mailers/email.html.erb +46 -11
- data/lib/rails/templates/rails/mailers/index.html.erb +14 -7
- data/lib/rails/templates/rails/mailers/mailer.html.erb +11 -5
- data/lib/rails/templates/rails/welcome/index.html.erb +65 -48
- data/lib/rails/test_help.rb +13 -14
- data/lib/rails/test_unit/line_filtering.rb +1 -1
- data/lib/rails/test_unit/railtie.rb +0 -4
- data/lib/rails/test_unit/reporter.rb +8 -3
- data/lib/rails/test_unit/runner.rb +61 -19
- data/lib/rails/test_unit/test_parser.rb +88 -0
- data/lib/rails/test_unit/testing.rake +17 -36
- data/lib/rails/testing/maintain_test_schema.rb +16 -0
- data/lib/rails/version.rb +1 -1
- data/lib/rails/welcome_controller.rb +1 -0
- data/lib/rails/zeitwerk_checker.rb +15 -0
- data/lib/rails.rb +31 -23
- metadata +89 -58
- data/RDOC_MAIN.rdoc +0 -98
- data/lib/rails/application/dummy_erb_compiler.rb +0 -18
- data/lib/rails/command/spellchecker.rb +0 -58
- data/lib/rails/generators/css/assets/assets_generator.rb +0 -15
- data/lib/rails/generators/css/assets/templates/stylesheet.css +0 -4
- data/lib/rails/generators/css/scaffold/scaffold_generator.rb +0 -18
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +0 -6
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +0 -5
- data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +0 -23
- data/lib/rails/generators/rails/app/templates/bin/yarn.tt +0 -10
- data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml.tt +0 -50
- data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml.tt +0 -86
- data/lib/rails/generators/rails/app/templates/config/initializers/application_controller_renderer.rb.tt +0 -8
- data/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb.tt +0 -7
- data/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb.tt +0 -5
- data/lib/rails/generators/rails/app/templates/config/initializers/mime_types.rb.tt +0 -4
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt +0 -45
- data/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +0 -16
- data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +0 -6
- data/lib/rails/generators/rails/app/templates/package.json.tt +0 -11
- data/lib/rails/generators/rails/assets/USAGE +0 -17
- data/lib/rails/generators/rails/assets/assets_generator.rb +0 -26
- data/lib/rails/generators/rails/assets/templates/stylesheet.css +0 -4
- data/lib/rails/generators/rails/model/USAGE +0 -114
- data/lib/rails/generators/rails/plugin/templates/rails/application.rb.tt +0 -23
- data/lib/rails/generators/rails/scaffold/templates/scaffold.css +0 -80
- data/lib/rails/tasks/annotations.rake +0 -22
- data/lib/rails/tasks/dev.rake +0 -11
- data/lib/rails/tasks/initializers.rake +0 -9
- data/lib/rails/tasks/middleware.rake +0 -9
- data/lib/rails/tasks/restart.rake +0 -9
- data/lib/rails/tasks/routes.rake +0 -9
data/lib/rails/engine.rb
CHANGED
@@ -2,18 +2,21 @@
|
|
2
2
|
|
3
3
|
require "rails/railtie"
|
4
4
|
require "rails/engine/railties"
|
5
|
+
require "active_support/callbacks"
|
5
6
|
require "active_support/core_ext/module/delegation"
|
7
|
+
require "active_support/core_ext/object/try"
|
6
8
|
require "pathname"
|
7
9
|
require "thread"
|
8
10
|
|
9
11
|
module Rails
|
10
|
-
#
|
12
|
+
# +Rails::Engine+ allows you to wrap a specific \Rails application or subset of
|
11
13
|
# functionality and share it with other applications or within a larger packaged application.
|
12
|
-
# Every
|
14
|
+
# Every Rails::Application is just an engine, which allows for simple
|
13
15
|
# feature and application sharing.
|
14
16
|
#
|
15
|
-
# Any
|
16
|
-
# methods (like
|
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
|
17
20
|
# options that are available in railties can also be used in engines.
|
18
21
|
#
|
19
22
|
# == Creating an Engine
|
@@ -29,16 +32,16 @@ module Rails
|
|
29
32
|
# end
|
30
33
|
#
|
31
34
|
# Then ensure that this file is loaded at the top of your <tt>config/application.rb</tt>
|
32
|
-
# (or in your +Gemfile+) and it will automatically load models, controllers and helpers
|
35
|
+
# (or in your +Gemfile+), and it will automatically load models, controllers, and helpers
|
33
36
|
# inside +app+, load routes at <tt>config/routes.rb</tt>, load locales at
|
34
|
-
# <tt>config/locales
|
37
|
+
# <tt>config/locales/**/*</tt>, and load tasks at <tt>lib/tasks/**/*</tt>.
|
35
38
|
#
|
36
39
|
# == Configuration
|
37
40
|
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
41
|
+
# Like railties, engines can access a config object which contains configuration shared by
|
42
|
+
# all railties and the application.
|
43
|
+
# Additionally, each engine can access <tt>autoload_paths</tt>, <tt>eager_load_paths</tt> and
|
44
|
+
# <tt>autoload_once_paths</tt> settings which are scoped to that engine.
|
42
45
|
#
|
43
46
|
# class MyEngine < Rails::Engine
|
44
47
|
# # Add a load path for this specific Engine
|
@@ -112,9 +115,9 @@ module Rails
|
|
112
115
|
# == Endpoint
|
113
116
|
#
|
114
117
|
# An engine can also be a Rack application. It can be useful if you have a Rack application that
|
115
|
-
# you would like to
|
118
|
+
# you would like to provide with some of the +Engine+'s features.
|
116
119
|
#
|
117
|
-
# To do that, use the
|
120
|
+
# To do that, use the ::endpoint method:
|
118
121
|
#
|
119
122
|
# module MyEngine
|
120
123
|
# class Engine < Rails::Engine
|
@@ -122,7 +125,7 @@ module Rails
|
|
122
125
|
# end
|
123
126
|
# end
|
124
127
|
#
|
125
|
-
# Now you can mount your engine in application's routes
|
128
|
+
# Now you can mount your engine in application's routes:
|
126
129
|
#
|
127
130
|
# Rails.application.routes.draw do
|
128
131
|
# mount MyEngine::Engine => "/engine"
|
@@ -179,7 +182,7 @@ module Rails
|
|
179
182
|
# it's used as default <tt>:as</tt> option
|
180
183
|
# * rake task for installing migrations <tt>my_engine:install:migrations</tt>
|
181
184
|
#
|
182
|
-
# Engine name is set by default based on class name. For
|
185
|
+
# Engine name is set by default based on class name. For +MyEngine::Engine+ it will be
|
183
186
|
# <tt>my_engine_engine</tt>. You can change it manually using the <tt>engine_name</tt> method:
|
184
187
|
#
|
185
188
|
# module MyEngine
|
@@ -190,13 +193,13 @@ module Rails
|
|
190
193
|
#
|
191
194
|
# == Isolated Engine
|
192
195
|
#
|
193
|
-
# Normally when you create controllers, helpers and models inside an engine, they are treated
|
196
|
+
# Normally when you create controllers, helpers, and models inside an engine, they are treated
|
194
197
|
# as if they were created inside the application itself. This means that all helpers and
|
195
198
|
# named routes from the application will be available to your engine's controllers as well.
|
196
199
|
#
|
197
200
|
# However, sometimes you want to isolate your engine from the application, especially if your engine
|
198
|
-
# has its own router. To do that, you simply need to call
|
199
|
-
# you to pass a module where all your controllers, helpers and models should be nested to:
|
201
|
+
# has its own router. To do that, you simply need to call ::isolate_namespace. This method requires
|
202
|
+
# you to pass a module where all your controllers, helpers, and models should be nested to:
|
200
203
|
#
|
201
204
|
# module MyEngine
|
202
205
|
# class Engine < Rails::Engine
|
@@ -228,15 +231,15 @@ module Rails
|
|
228
231
|
# resources :articles
|
229
232
|
# end
|
230
233
|
#
|
231
|
-
# If +MyEngine+ is isolated,
|
232
|
-
#
|
234
|
+
# If +MyEngine+ is isolated, the routes above will point to
|
235
|
+
# +MyEngine::ArticlesController+. You also don't need to use longer
|
233
236
|
# URL helpers like +my_engine_articles_path+. Instead, you should simply use
|
234
237
|
# +articles_path+, like you would do with your main application.
|
235
238
|
#
|
236
239
|
# To make this behavior consistent with other parts of the framework,
|
237
|
-
# isolated engines also have an effect on
|
238
|
-
# normal Rails app, when you use a namespaced model such as
|
239
|
-
#
|
240
|
+
# isolated engines also have an effect on ActiveModel::Naming. In a
|
241
|
+
# normal \Rails app, when you use a namespaced model such as
|
242
|
+
# +Namespace::Article+, ActiveModel::Naming will generate
|
240
243
|
# names with the prefix "namespace". In an isolated engine, the prefix will
|
241
244
|
# be omitted in URL helpers and form fields, for convenience.
|
242
245
|
#
|
@@ -250,7 +253,7 @@ module Rails
|
|
250
253
|
# Additionally, an isolated engine will set its own name according to its
|
251
254
|
# namespace, so <tt>MyEngine::Engine.engine_name</tt> will return
|
252
255
|
# "my_engine". It will also set +MyEngine.table_name_prefix+ to "my_engine_",
|
253
|
-
# meaning for example that
|
256
|
+
# meaning for example that +MyEngine::Article+ will use the
|
254
257
|
# +my_engine_articles+ database table by default.
|
255
258
|
#
|
256
259
|
# == Using Engine's routes outside Engine
|
@@ -298,7 +301,7 @@ module Rails
|
|
298
301
|
#
|
299
302
|
# == Isolated engine's helpers
|
300
303
|
#
|
301
|
-
# 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.
|
302
305
|
# If you want to share just a few specific helpers you can add them to application's
|
303
306
|
# helpers in ApplicationController:
|
304
307
|
#
|
@@ -313,7 +316,7 @@ module Rails
|
|
313
316
|
# helper MyEngine::Engine.helpers
|
314
317
|
# end
|
315
318
|
#
|
316
|
-
# It will include all of the helpers from engine's directory. Take into account
|
319
|
+
# It will include all of the helpers from engine's directory. Take into account this does
|
317
320
|
# not include helpers defined in controllers with helper_method or other similar solutions,
|
318
321
|
# only helpers defined in the helpers directory will be included.
|
319
322
|
#
|
@@ -325,7 +328,7 @@ module Rails
|
|
325
328
|
# To use engine's migrations in application you can use the rake task below, which copies them to
|
326
329
|
# application's dir:
|
327
330
|
#
|
328
|
-
# rake ENGINE_NAME:install:migrations
|
331
|
+
# $ rake ENGINE_NAME:install:migrations
|
329
332
|
#
|
330
333
|
# Note that some of the migrations may be skipped if a migration with the same name already exists
|
331
334
|
# in application. In such a situation you must decide whether to leave that migration or rename the
|
@@ -362,7 +365,7 @@ module Rails
|
|
362
365
|
base.called_from = begin
|
363
366
|
call_stack = caller_locations.map { |l| l.absolute_path || l.path }
|
364
367
|
|
365
|
-
File.dirname(call_stack.detect { |p| p
|
368
|
+
File.dirname(call_stack.detect { |p| !p.match?(%r[railties[\w.-]*/lib/rails|rack[\w.-]*/lib/rack]) })
|
366
369
|
end
|
367
370
|
end
|
368
371
|
|
@@ -393,6 +396,12 @@ module Rails
|
|
393
396
|
|
394
397
|
unless mod.respond_to?(:table_name_prefix)
|
395
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
|
396
405
|
end
|
397
406
|
|
398
407
|
unless mod.respond_to?(:use_relative_model_naming?)
|
@@ -421,6 +430,9 @@ module Rails
|
|
421
430
|
end
|
422
431
|
end
|
423
432
|
|
433
|
+
include ActiveSupport::Callbacks
|
434
|
+
define_callbacks :load_seed
|
435
|
+
|
424
436
|
delegate :middleware, :root, :paths, to: :config
|
425
437
|
delegate :engine_name, :isolated?, to: :class
|
426
438
|
|
@@ -437,7 +449,7 @@ module Rails
|
|
437
449
|
end
|
438
450
|
|
439
451
|
# Load console and invoke the registered hooks.
|
440
|
-
# Check
|
452
|
+
# Check Rails::Railtie.console for more info.
|
441
453
|
def load_console(app = self)
|
442
454
|
require "rails/console/app"
|
443
455
|
require "rails/console/helpers"
|
@@ -445,23 +457,23 @@ module Rails
|
|
445
457
|
self
|
446
458
|
end
|
447
459
|
|
448
|
-
# Load Rails runner and invoke the registered hooks.
|
449
|
-
# Check
|
460
|
+
# Load \Rails runner and invoke the registered hooks.
|
461
|
+
# Check Rails::Railtie.runner for more info.
|
450
462
|
def load_runner(app = self)
|
451
463
|
run_runner_blocks(app)
|
452
464
|
self
|
453
465
|
end
|
454
466
|
|
455
|
-
# Load Rake
|
456
|
-
# Check
|
467
|
+
# Load Rake and railties tasks, and invoke the registered hooks.
|
468
|
+
# Check Rails::Railtie.rake_tasks for more info.
|
457
469
|
def load_tasks(app = self)
|
458
470
|
require "rake"
|
459
471
|
run_tasks_blocks(app)
|
460
472
|
self
|
461
473
|
end
|
462
474
|
|
463
|
-
# Load Rails generators and invoke the registered hooks.
|
464
|
-
# Check
|
475
|
+
# Load \Rails generators and invoke the registered hooks.
|
476
|
+
# Check Rails::Railtie.generators for more info.
|
465
477
|
def load_generators(app = self)
|
466
478
|
require "rails/generators"
|
467
479
|
run_generators_blocks(app)
|
@@ -469,17 +481,16 @@ module Rails
|
|
469
481
|
self
|
470
482
|
end
|
471
483
|
|
484
|
+
# Invoke the server registered hooks.
|
485
|
+
# Check Rails::Railtie.server for more info.
|
486
|
+
def load_server(app = self)
|
487
|
+
run_server_blocks(app)
|
488
|
+
self
|
489
|
+
end
|
490
|
+
|
472
491
|
def eager_load!
|
473
|
-
# Already done by Zeitwerk::Loader.eager_load_all
|
474
|
-
|
475
|
-
|
476
|
-
config.eager_load_paths.each do |load_path|
|
477
|
-
# Starts after load_path plus a slash, ends before ".rb".
|
478
|
-
relname_range = (load_path.to_s.length + 1)...-3
|
479
|
-
Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
|
480
|
-
require_dependency file[relname_range]
|
481
|
-
end
|
482
|
-
end
|
492
|
+
# Already done by Zeitwerk::Loader.eager_load_all. By now, we leave the
|
493
|
+
# method as a no-op for backwards compatibility.
|
483
494
|
end
|
484
495
|
|
485
496
|
def railties
|
@@ -490,8 +501,7 @@ module Rails
|
|
490
501
|
def helpers
|
491
502
|
@helpers ||= begin
|
492
503
|
helpers = Module.new
|
493
|
-
|
494
|
-
ActionController::Base.modules_for_helpers(all).each do |mod|
|
504
|
+
AbstractController::Helpers.helper_modules_from_paths(helpers_paths).each do |mod|
|
495
505
|
helpers.include(mod)
|
496
506
|
end
|
497
507
|
helpers
|
@@ -550,12 +560,12 @@ module Rails
|
|
550
560
|
# Blog::Engine.load_seed
|
551
561
|
def load_seed
|
552
562
|
seed_file = paths["db/seeds.rb"].existent.first
|
553
|
-
|
563
|
+
run_callbacks(:load_seed) { load(seed_file) } if seed_file
|
564
|
+
end
|
554
565
|
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
load(seed_file)
|
566
|
+
initializer :load_environment_config, before: :load_environment_hook, group: :all do
|
567
|
+
paths["config/environments"].existent.each do |environment|
|
568
|
+
require environment
|
559
569
|
end
|
560
570
|
end
|
561
571
|
|
@@ -566,11 +576,6 @@ module Rails
|
|
566
576
|
$LOAD_PATH.uniq!
|
567
577
|
end
|
568
578
|
|
569
|
-
# Set the paths from which Rails will automatically load source files,
|
570
|
-
# and the load_once paths.
|
571
|
-
#
|
572
|
-
# This needs to be an initializer, since it needs to run once
|
573
|
-
# per engine and get the engine as a block parameter.
|
574
579
|
initializer :set_autoload_paths, before: :bootstrap_hook do
|
575
580
|
ActiveSupport::Dependencies.autoload_paths.unshift(*_all_autoload_paths)
|
576
581
|
ActiveSupport::Dependencies.autoload_once_paths.unshift(*_all_autoload_once_paths)
|
@@ -580,16 +585,20 @@ module Rails
|
|
580
585
|
end
|
581
586
|
|
582
587
|
initializer :set_eager_load_paths, before: :bootstrap_hook do
|
583
|
-
ActiveSupport::Dependencies._eager_load_paths.merge(config.
|
588
|
+
ActiveSupport::Dependencies._eager_load_paths.merge(config.all_eager_load_paths)
|
584
589
|
config.eager_load_paths.freeze
|
585
590
|
end
|
586
591
|
|
587
592
|
initializer :add_routing_paths do |app|
|
588
593
|
routing_paths = paths["config/routes.rb"].existent
|
594
|
+
external_paths = self.paths["config/routes"].paths
|
595
|
+
routes.draw_paths.concat(external_paths)
|
596
|
+
app.routes.draw_paths.concat(external_paths)
|
589
597
|
|
590
598
|
if routes? || routing_paths.any?
|
591
599
|
app.routes_reloader.paths.unshift(*routing_paths)
|
592
600
|
app.routes_reloader.route_sets << routes
|
601
|
+
app.routes_reloader.external_routes.unshift(*external_paths)
|
593
602
|
end
|
594
603
|
end
|
595
604
|
|
@@ -607,9 +616,19 @@ module Rails
|
|
607
616
|
end
|
608
617
|
end
|
609
618
|
|
610
|
-
initializer :
|
611
|
-
paths["
|
612
|
-
|
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}/"] }
|
613
632
|
end
|
614
633
|
end
|
615
634
|
|
@@ -625,6 +644,12 @@ module Rails
|
|
625
644
|
end
|
626
645
|
end
|
627
646
|
|
647
|
+
initializer :wrap_executor_around_load_seed do |app|
|
648
|
+
self.class.set_callback(:load_seed, :around) do |engine, seeds_block|
|
649
|
+
app.executor.wrap(&seeds_block)
|
650
|
+
end
|
651
|
+
end
|
652
|
+
|
628
653
|
initializer :engines_blank_point do
|
629
654
|
# We need this initializer so all extra initializers added in engines are
|
630
655
|
# consistently executed after all the initializers above across all engines.
|
@@ -649,42 +674,28 @@ module Rails
|
|
649
674
|
end
|
650
675
|
end
|
651
676
|
|
652
|
-
def routes?
|
677
|
+
def routes? # :nodoc:
|
653
678
|
@routes
|
654
679
|
end
|
655
680
|
|
656
681
|
protected
|
657
|
-
|
658
|
-
def run_tasks_blocks(*) #:nodoc:
|
682
|
+
def run_tasks_blocks(*) # :nodoc:
|
659
683
|
super
|
660
684
|
paths["lib/tasks"].existent.sort.each { |ext| load(ext) }
|
661
685
|
end
|
662
686
|
|
663
687
|
private
|
664
|
-
|
665
688
|
def load_config_initializer(initializer) # :doc:
|
666
689
|
ActiveSupport::Notifications.instrument("load_config_initializer.railties", initializer: initializer) do
|
667
690
|
load(initializer)
|
668
691
|
end
|
669
692
|
end
|
670
693
|
|
671
|
-
def with_inline_jobs
|
672
|
-
queue_adapter = config.active_job.queue_adapter
|
673
|
-
ActiveSupport.on_load(:active_job) do
|
674
|
-
self.queue_adapter = :inline
|
675
|
-
end
|
676
|
-
yield
|
677
|
-
ensure
|
678
|
-
ActiveSupport.on_load(:active_job) do
|
679
|
-
self.queue_adapter = queue_adapter
|
680
|
-
end
|
681
|
-
end
|
682
|
-
|
683
694
|
def has_migrations?
|
684
695
|
paths["db/migrate"].existent.any?
|
685
696
|
end
|
686
697
|
|
687
|
-
def self.find_root_with_flag(flag, root_path, default = nil)
|
698
|
+
def self.find_root_with_flag(flag, root_path, default = nil) # :nodoc:
|
688
699
|
while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/#{flag}")
|
689
700
|
parent = File.dirname(root_path)
|
690
701
|
root_path = parent != root_path && parent
|
@@ -701,21 +712,34 @@ module Rails
|
|
701
712
|
end
|
702
713
|
|
703
714
|
def _all_autoload_once_paths
|
704
|
-
config.
|
715
|
+
config.all_autoload_once_paths.uniq
|
705
716
|
end
|
706
717
|
|
707
718
|
def _all_autoload_paths
|
708
|
-
@_all_autoload_paths ||=
|
719
|
+
@_all_autoload_paths ||= begin
|
720
|
+
autoload_paths = config.all_autoload_paths
|
721
|
+
autoload_paths += config.all_eager_load_paths
|
722
|
+
autoload_paths -= config.all_autoload_once_paths
|
723
|
+
autoload_paths.uniq
|
724
|
+
end
|
709
725
|
end
|
710
726
|
|
711
727
|
def _all_load_paths(add_autoload_paths_to_load_path)
|
712
728
|
@_all_load_paths ||= begin
|
713
|
-
load_paths
|
714
|
-
|
729
|
+
load_paths = config.paths.load_paths
|
730
|
+
if add_autoload_paths_to_load_path
|
731
|
+
load_paths += _all_autoload_paths
|
732
|
+
load_paths += _all_autoload_once_paths
|
733
|
+
end
|
715
734
|
load_paths.uniq
|
716
735
|
end
|
717
736
|
end
|
718
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
|
+
|
719
743
|
def build_request(env)
|
720
744
|
env.merge!(env_config)
|
721
745
|
req = ActionDispatch::Request.new env
|
data/lib/rails/gem_version.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Rails
|
4
|
-
# Returns the version of
|
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 =
|
11
|
-
MINOR =
|
12
|
-
TINY =
|
13
|
-
PRE =
|
10
|
+
MAJOR = 7
|
11
|
+
MINOR = 1
|
12
|
+
TINY = 3
|
13
|
+
PRE = "2"
|
14
14
|
|
15
15
|
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
|
16
16
|
end
|
@@ -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
|
9
|
+
class CreateMigration < Thor::Actions::CreateFile # :nodoc:
|
10
10
|
def migration_dir
|
11
11
|
File.dirname(@destination)
|
12
12
|
end
|
@@ -19,6 +19,13 @@ module Rails
|
|
19
19
|
exists? && File.binread(existing_migration) == render
|
20
20
|
end
|
21
21
|
|
22
|
+
def invoke!
|
23
|
+
return super if pretend?
|
24
|
+
|
25
|
+
invoked_file = super
|
26
|
+
File.exist?(@destination) ? invoked_file : relative_existing_migration
|
27
|
+
end
|
28
|
+
|
22
29
|
def revoke!
|
23
30
|
say_destination = exists? ? relative_existing_migration : relative_destination
|
24
31
|
say_status :remove, :red, say_destination
|
@@ -32,15 +39,12 @@ module Rails
|
|
32
39
|
end
|
33
40
|
|
34
41
|
def existing_migration
|
35
|
-
@existing_migration ||=
|
36
|
-
@base.class.migration_exists?(migration_dir, migration_file_name) ||
|
42
|
+
@existing_migration ||= @base.class.migration_exists?(migration_dir, migration_file_name) ||
|
37
43
|
File.exist?(@destination) && @destination
|
38
|
-
end
|
39
44
|
end
|
40
45
|
alias :exists? :existing_migration
|
41
46
|
|
42
47
|
private
|
43
|
-
|
44
48
|
def on_conflict_behavior # :doc:
|
45
49
|
options = base.options.merge(config)
|
46
50
|
if identical?
|