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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +723 -215
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.md +99 -0
- data/README.rdoc +4 -4
- data/lib/minitest/rails_plugin.rb +63 -0
- data/lib/rails/api/task.rb +35 -4
- data/lib/rails/app_updater.rb +14 -2
- data/lib/rails/application/bootstrap.rb +23 -4
- data/lib/rails/application/configuration.rb +190 -69
- data/lib/rails/application/default_middleware_stack.rb +8 -2
- data/lib/rails/application/dummy_config.rb +19 -0
- data/lib/rails/application/finisher.rb +43 -33
- data/lib/rails/application.rb +141 -33
- data/lib/rails/backtrace_cleaner.rb +5 -3
- data/lib/rails/cli.rb +5 -2
- data/lib/rails/command/actions.rb +10 -12
- data/lib/rails/command/base.rb +55 -53
- data/lib/rails/command/environment_argument.rb +32 -16
- data/lib/rails/command/helpers/editor.rb +17 -12
- data/lib/rails/command.rb +84 -33
- 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 +14 -14
- data/lib/rails/commands/credentials/USAGE +53 -55
- data/lib/rails/commands/credentials/credentials_command/diffing.rb +5 -3
- data/lib/rails/commands/credentials/credentials_command.rb +64 -70
- data/lib/rails/commands/db/system/change/change_command.rb +2 -1
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +25 -115
- 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 +2 -2
- data/lib/rails/commands/help/USAGE +13 -13
- 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 +2 -1
- data/lib/rails/commands/plugin/plugin_command.rb +2 -0
- data/lib/rails/commands/rake/rake_command.rb +25 -22
- 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 +32 -20
- data/lib/rails/commands/secret/secret_command.rb +13 -0
- data/lib/rails/commands/secrets/USAGE +44 -49
- data/lib/rails/commands/secrets/secrets_command.rb +20 -38
- data/lib/rails/commands/server/server_command.rb +33 -32
- data/lib/rails/commands/test/USAGE +14 -0
- data/lib/rails/commands/test/test_command.rb +56 -14
- 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 +5 -5
- data/lib/rails/console/app.rb +1 -4
- data/lib/rails/deprecator.rb +7 -0
- data/lib/rails/engine/configuration.rb +50 -6
- data/lib/rails/engine.rb +49 -21
- data/lib/rails/gem_version.rb +4 -4
- data/lib/rails/generators/actions.rb +6 -15
- data/lib/rails/generators/active_model.rb +28 -14
- data/lib/rails/generators/app_base.rb +355 -82
- data/lib/rails/generators/app_name.rb +3 -14
- data/lib/rails/generators/base.rb +17 -9
- data/lib/rails/generators/database.rb +40 -2
- data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
- data/lib/rails/generators/generated_attribute.rb +12 -0
- data/lib/rails/generators/migration.rb +4 -5
- data/lib/rails/generators/model_helpers.rb +2 -1
- data/lib/rails/generators/rails/app/USAGE +22 -6
- data/lib/rails/generators/rails/app/app_generator.rb +85 -64
- data/lib/rails/generators/rails/app/templates/Dockerfile.tt +103 -0
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +9 -11
- data/lib/rails/generators/rails/app/templates/app/views/layouts/mailer.html.erb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/bin/setup.tt +10 -1
- data/lib/rails/generators/rails/app/templates/config/application.rb.tt +6 -17
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +4 -4
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +4 -6
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +12 -2
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +32 -28
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +13 -9
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +2 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +280 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -9
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +11 -13
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +21 -20
- data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +5 -1
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +6 -4
- 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/gitignore.tt +4 -8
- 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 +9 -7
- data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
- data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +2 -1
- data/lib/rails/generators/rails/controller/USAGE +12 -4
- data/lib/rails/generators/rails/controller/controller_generator.rb +5 -0
- data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -1
- data/lib/rails/generators/rails/credentials/credentials_generator.rb +29 -24
- data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
- data/lib/rails/generators/rails/db/system/change/change_generator.rb +30 -0
- data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
- data/lib/rails/generators/rails/migration/USAGE +21 -11
- 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 +5 -15
- data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -17
- data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -2
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +4 -4
- data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -1
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +1 -1
- data/lib/rails/generators/test_case.rb +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +1 -1
- data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +4 -1
- data/lib/rails/generators.rb +6 -14
- data/lib/rails/health_controller.rb +55 -0
- data/lib/rails/info.rb +1 -1
- data/lib/rails/info_controller.rb +33 -11
- data/lib/rails/mailers_controller.rb +15 -5
- data/lib/rails/paths.rb +13 -10
- data/lib/rails/rack/logger.rb +15 -12
- data/lib/rails/rackup/server.rb +15 -0
- data/lib/rails/railtie/configuration.rb +14 -1
- data/lib/rails/railtie.rb +31 -31
- data/lib/rails/ruby_version_check.rb +2 -0
- data/lib/rails/source_annotation_extractor.rb +67 -18
- data/lib/rails/tasks/engine.rake +8 -8
- data/lib/rails/tasks/framework.rake +4 -10
- data/lib/rails/tasks/log.rake +1 -1
- data/lib/rails/tasks/misc.rake +3 -14
- data/lib/rails/tasks/statistics.rake +5 -4
- data/lib/rails/tasks/tmp.rake +5 -5
- data/lib/rails/tasks/zeitwerk.rake +15 -35
- data/lib/rails/tasks.rb +0 -2
- data/lib/rails/templates/rails/mailers/email.html.erb +32 -0
- 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 +1 -0
- data/lib/rails/test_help.rb +9 -14
- data/lib/rails/test_unit/line_filtering.rb +1 -1
- data/lib/rails/test_unit/reporter.rb +6 -2
- data/lib/rails/test_unit/runner.rb +36 -18
- data/lib/rails/test_unit/test_parser.rb +88 -0
- data/lib/rails/test_unit/testing.rake +13 -33
- data/lib/rails/testing/maintain_test_schema.rb +16 -0
- data/lib/rails/version.rb +1 -1
- data/lib/rails/zeitwerk_checker.rb +15 -0
- data/lib/rails.rb +15 -15
- metadata +64 -27
- data/RDOC_MAIN.rdoc +0 -97
- data/lib/rails/application/dummy_erb_compiler.rb +0 -18
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +0 -143
- data/lib/rails/generators/rails/model/USAGE +0 -113
- data/lib/rails/tasks/middleware.rake +0 -9
- data/lib/rails/tasks/restart.rake +0 -9
data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt
ADDED
@@ -0,0 +1,280 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
#
|
3
|
+
# This file eases your Rails 7.1 framework defaults upgrade.
|
4
|
+
#
|
5
|
+
# Uncomment each configuration one by one to switch to the new default.
|
6
|
+
# Once your application is ready to run with all new defaults, you can remove
|
7
|
+
# this file and set the `config.load_defaults` to `7.1`.
|
8
|
+
#
|
9
|
+
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
10
|
+
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
11
|
+
|
12
|
+
###
|
13
|
+
# No longer add autoloaded paths into `$LOAD_PATH`. This means that you won't be able
|
14
|
+
# to manually require files that are managed by the autoloader, which you shouldn't do anyway.
|
15
|
+
#
|
16
|
+
# This will reduce the size of the load path, making `require` faster if you don't use bootsnap, or reduce the size
|
17
|
+
# of the bootsnap cache if you use it.
|
18
|
+
#
|
19
|
+
# To set this configuration, add the following line to `config/application.rb` (NOT this file):
|
20
|
+
# config.add_autoload_paths_to_load_path = false
|
21
|
+
|
22
|
+
###
|
23
|
+
# Remove the default X-Download-Options headers since it is used only by Internet Explorer.
|
24
|
+
# If you need to support Internet Explorer, add back `"X-Download-Options" => "noopen"`.
|
25
|
+
#++
|
26
|
+
# Rails.application.config.action_dispatch.default_headers = {
|
27
|
+
# "X-Frame-Options" => "SAMEORIGIN",
|
28
|
+
# "X-XSS-Protection" => "0",
|
29
|
+
# "X-Content-Type-Options" => "nosniff",
|
30
|
+
# "X-Permitted-Cross-Domain-Policies" => "none",
|
31
|
+
# "Referrer-Policy" => "strict-origin-when-cross-origin"
|
32
|
+
# }
|
33
|
+
|
34
|
+
###
|
35
|
+
# Do not treat an `ActionController::Parameters` instance
|
36
|
+
# as equal to an equivalent `Hash` by default.
|
37
|
+
#++
|
38
|
+
# Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality = false
|
39
|
+
|
40
|
+
###
|
41
|
+
# Active Record Encryption now uses SHA-256 as its hash digest algorithm.
|
42
|
+
#
|
43
|
+
# There are 3 scenarios to consider.
|
44
|
+
#
|
45
|
+
# 1. If you have data encrypted with previous Rails versions, and you have
|
46
|
+
# +config.active_support.key_generator_hash_digest_class+ configured as SHA1 (the default
|
47
|
+
# before Rails 7.0), you need to configure SHA-1 for Active Record Encryption too:
|
48
|
+
#++
|
49
|
+
# Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA1
|
50
|
+
#
|
51
|
+
# 2. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA256 (the new default
|
52
|
+
# in 7.0), then you need to configure SHA-256 for Active Record Encryption:
|
53
|
+
#++
|
54
|
+
# Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA256
|
55
|
+
#
|
56
|
+
# 3. If you don't currently have data encrypted with Active Record encryption, you can disable this setting to
|
57
|
+
# configure the default behavior starting 7.1+:
|
58
|
+
#++
|
59
|
+
# Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = false
|
60
|
+
|
61
|
+
###
|
62
|
+
# No longer run after_commit callbacks on the first of multiple Active Record
|
63
|
+
# instances to save changes to the same database row within a transaction.
|
64
|
+
# Instead, run these callbacks on the instance most likely to have internal
|
65
|
+
# state which matches what was committed to the database, typically the last
|
66
|
+
# instance to save.
|
67
|
+
#++
|
68
|
+
# Rails.application.config.active_record.run_commit_callbacks_on_first_saved_instances_in_transaction = false
|
69
|
+
|
70
|
+
###
|
71
|
+
# Configures SQLite with a strict strings mode, which disables double-quoted string literals.
|
72
|
+
#
|
73
|
+
# SQLite has some quirks around double-quoted string literals.
|
74
|
+
# It first tries to consider double-quoted strings as identifier names, but if they don't exist
|
75
|
+
# it then considers them as string literals. Because of this, typos can silently go unnoticed.
|
76
|
+
# For example, it is possible to create an index for a non existing column.
|
77
|
+
# See https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted for more details.
|
78
|
+
#++
|
79
|
+
# Rails.application.config.active_record.sqlite3_adapter_strict_strings_by_default = true
|
80
|
+
|
81
|
+
###
|
82
|
+
# Disable deprecated singular associations names.
|
83
|
+
#++
|
84
|
+
# Rails.application.config.active_record.allow_deprecated_singular_associations_name = false
|
85
|
+
|
86
|
+
###
|
87
|
+
# Enable the Active Job `BigDecimal` argument serializer, which guarantees
|
88
|
+
# roundtripping. Without this serializer, some queue adapters may serialize
|
89
|
+
# `BigDecimal` arguments as simple (non-roundtrippable) strings.
|
90
|
+
#
|
91
|
+
# When deploying an application with multiple replicas, old (pre-Rails 7.1)
|
92
|
+
# replicas will not be able to deserialize `BigDecimal` arguments from this
|
93
|
+
# serializer. Therefore, this setting should only be enabled after all replicas
|
94
|
+
# have been successfully upgraded to Rails 7.1.
|
95
|
+
#++
|
96
|
+
# Rails.application.config.active_job.use_big_decimal_serializer = true
|
97
|
+
|
98
|
+
###
|
99
|
+
# Specify if an `ArgumentError` should be raised if `Rails.cache` `fetch` or
|
100
|
+
# `write` are given an invalid `expires_at` or `expires_in` time.
|
101
|
+
# Options are `true`, and `false`. If `false`, the exception will be reported
|
102
|
+
# as `handled` and logged instead.
|
103
|
+
#++
|
104
|
+
# Rails.application.config.active_support.raise_on_invalid_cache_expiration_time = true
|
105
|
+
|
106
|
+
###
|
107
|
+
# Specify whether Query Logs will format tags using the SQLCommenter format
|
108
|
+
# (https://open-telemetry.github.io/opentelemetry-sqlcommenter/), or using the legacy format.
|
109
|
+
# Options are `:legacy` and `:sqlcommenter`.
|
110
|
+
#++
|
111
|
+
# Rails.application.config.active_record.query_log_tags_format = :sqlcommenter
|
112
|
+
|
113
|
+
###
|
114
|
+
# Specify the default serializer used by `MessageEncryptor` and `MessageVerifier`
|
115
|
+
# instances.
|
116
|
+
#
|
117
|
+
# The legacy default is `:marshal`, which is a potential vector for
|
118
|
+
# deserialization attacks in cases where a message signing secret has been
|
119
|
+
# leaked.
|
120
|
+
#
|
121
|
+
# In Rails 7.1, the new default is `:json_allow_marshal` which serializes and
|
122
|
+
# deserializes with `ActiveSupport::JSON`, but can fall back to deserializing
|
123
|
+
# with `Marshal` so that legacy messages can still be read.
|
124
|
+
#
|
125
|
+
# In Rails 7.2, the default will become `:json` which serializes and
|
126
|
+
# deserializes with `ActiveSupport::JSON` only.
|
127
|
+
#
|
128
|
+
# Alternatively, you can choose `:message_pack` or `:message_pack_allow_marshal`,
|
129
|
+
# which serialize with `ActiveSupport::MessagePack`. `ActiveSupport::MessagePack`
|
130
|
+
# can roundtrip some Ruby types that are not supported by JSON, and may provide
|
131
|
+
# improved performance, but it requires the `msgpack` gem.
|
132
|
+
#
|
133
|
+
# For more information, see
|
134
|
+
# https://guides.rubyonrails.org/v7.1/configuring.html#config-active-support-message-serializer
|
135
|
+
#
|
136
|
+
# If you are performing a rolling deploy of a Rails 7.1 upgrade, wherein servers
|
137
|
+
# that have not yet been upgraded must be able to read messages from upgraded
|
138
|
+
# servers, first deploy without changing the serializer, then set the serializer
|
139
|
+
# in a subsequent deploy.
|
140
|
+
#++
|
141
|
+
# Rails.application.config.active_support.message_serializer = :json_allow_marshal
|
142
|
+
|
143
|
+
###
|
144
|
+
# Enable a performance optimization that serializes message data and metadata
|
145
|
+
# together. This changes the message format, so messages serialized this way
|
146
|
+
# cannot be read by older versions of Rails. However, messages that use the old
|
147
|
+
# format can still be read, regardless of whether this optimization is enabled.
|
148
|
+
#
|
149
|
+
# To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
|
150
|
+
# not yet been upgraded must be able to read messages from upgraded servers,
|
151
|
+
# leave this optimization off on the first deploy, then enable it on a
|
152
|
+
# subsequent deploy.
|
153
|
+
#++
|
154
|
+
# Rails.application.config.active_support.use_message_serializer_for_metadata = true
|
155
|
+
|
156
|
+
###
|
157
|
+
# Set the maximum size for Rails log files.
|
158
|
+
#
|
159
|
+
# `config.load_defaults 7.1` does not set this value for environments other than
|
160
|
+
# development and test.
|
161
|
+
#++
|
162
|
+
# if Rails.env.local?
|
163
|
+
# Rails.application.config.log_file_size = 100 * 1024 * 1024
|
164
|
+
# end
|
165
|
+
|
166
|
+
###
|
167
|
+
# Enable raising on assignment to attr_readonly attributes. The previous
|
168
|
+
# behavior would allow assignment but silently not persist changes to the
|
169
|
+
# database.
|
170
|
+
#++
|
171
|
+
# Rails.application.config.active_record.raise_on_assign_to_attr_readonly = true
|
172
|
+
|
173
|
+
###
|
174
|
+
# Enable validating only parent-related columns for presence when the parent is mandatory.
|
175
|
+
# The previous behavior was to validate the presence of the parent record, which performed an extra query
|
176
|
+
# to get the parent every time the child record was updated, even when parent has not changed.
|
177
|
+
#++
|
178
|
+
# Rails.application.config.active_record.belongs_to_required_validates_foreign_key = false
|
179
|
+
|
180
|
+
###
|
181
|
+
# Enable precompilation of `config.filter_parameters`. Precompilation can
|
182
|
+
# improve filtering performance, depending on the quantity and types of filters.
|
183
|
+
#++
|
184
|
+
# Rails.application.config.precompile_filter_parameters = true
|
185
|
+
|
186
|
+
###
|
187
|
+
# Enable before_committed! callbacks on all enrolled records in a transaction.
|
188
|
+
# The previous behavior was to only run the callbacks on the first copy of a record
|
189
|
+
# if there were multiple copies of the same record enrolled in the transaction.
|
190
|
+
#++
|
191
|
+
# Rails.application.config.active_record.before_committed_on_all_records = true
|
192
|
+
|
193
|
+
###
|
194
|
+
# Disable automatic column serialization into YAML.
|
195
|
+
# To keep the historic behavior, you can set it to `YAML`, however it is
|
196
|
+
# recommended to explicitly define the serialization method for each column
|
197
|
+
# rather than to rely on a global default.
|
198
|
+
#++
|
199
|
+
# Rails.application.config.active_record.default_column_serializer = nil
|
200
|
+
|
201
|
+
###
|
202
|
+
# Enable a performance optimization that serializes Active Record models
|
203
|
+
# in a faster and more compact way.
|
204
|
+
#
|
205
|
+
# To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
|
206
|
+
# not yet been upgraded must be able to read caches from upgraded servers,
|
207
|
+
# leave this optimization off on the first deploy, then enable it on a
|
208
|
+
# subsequent deploy.
|
209
|
+
#++
|
210
|
+
# Rails.application.config.active_record.marshalling_format_version = 7.1
|
211
|
+
|
212
|
+
###
|
213
|
+
# Run `after_commit` and `after_*_commit` callbacks in the order they are defined in a model.
|
214
|
+
# This matches the behaviour of all other callbacks.
|
215
|
+
# In previous versions of Rails, they ran in the inverse order.
|
216
|
+
#++
|
217
|
+
# Rails.application.config.active_record.run_after_transaction_callbacks_in_order_defined = true
|
218
|
+
|
219
|
+
###
|
220
|
+
# Whether a `transaction` block is committed or rolled back when exited via `return`, `break` or `throw`.
|
221
|
+
#++
|
222
|
+
# Rails.application.config.active_record.commit_transaction_on_non_local_return = true
|
223
|
+
|
224
|
+
###
|
225
|
+
# Controls when to generate a value for <tt>has_secure_token</tt> declarations.
|
226
|
+
#++
|
227
|
+
# Rails.application.config.active_record.generate_secure_token_on = :initialize
|
228
|
+
|
229
|
+
###
|
230
|
+
# ** Please read carefully, this must be configured in config/application.rb **
|
231
|
+
#
|
232
|
+
# Change the format of the cache entry.
|
233
|
+
#
|
234
|
+
# Changing this default means that all new cache entries added to the cache
|
235
|
+
# will have a different format that is not supported by Rails 7.0
|
236
|
+
# applications.
|
237
|
+
#
|
238
|
+
# Only change this value after your application is fully deployed to Rails 7.1
|
239
|
+
# and you have no plans to rollback.
|
240
|
+
# When you're ready to change format, add this to `config/application.rb` (NOT
|
241
|
+
# this file):
|
242
|
+
# config.active_support.cache_format_version = 7.1
|
243
|
+
|
244
|
+
###
|
245
|
+
# Configure Action View to use HTML5 standards-compliant sanitizers when they are supported on your
|
246
|
+
# platform.
|
247
|
+
#
|
248
|
+
# `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action View to use HTML5-compliant
|
249
|
+
# sanitizers if they are supported, else fall back to HTML4 sanitizers.
|
250
|
+
#
|
251
|
+
# In previous versions of Rails, Action View always used `Rails::HTML4::Sanitizer` as its vendor.
|
252
|
+
#++
|
253
|
+
# Rails.application.config.action_view.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
|
254
|
+
|
255
|
+
###
|
256
|
+
# Configure Action Text to use an HTML5 standards-compliant sanitizer when it is supported on your
|
257
|
+
# platform.
|
258
|
+
#
|
259
|
+
# `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action Text to use HTML5-compliant
|
260
|
+
# sanitizers if they are supported, else fall back to HTML4 sanitizers.
|
261
|
+
#
|
262
|
+
# In previous versions of Rails, Action Text always used `Rails::HTML4::Sanitizer` as its vendor.
|
263
|
+
#++
|
264
|
+
# Rails.application.config.action_text.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
|
265
|
+
|
266
|
+
###
|
267
|
+
# Configure the log level used by the DebugExceptions middleware when logging
|
268
|
+
# uncaught exceptions during requests.
|
269
|
+
#++
|
270
|
+
# Rails.application.config.action_dispatch.debug_exception_log_level = :error
|
271
|
+
|
272
|
+
###
|
273
|
+
# Configure the test helpers in Action View, Action Dispatch, and rails-dom-testing to use HTML5
|
274
|
+
# parsers.
|
275
|
+
#
|
276
|
+
# Nokogiri::HTML5 isn't supported on JRuby, so JRuby applications must set this to :html4.
|
277
|
+
#
|
278
|
+
# In previous versions of Rails, these test helpers always used an HTML4 parser.
|
279
|
+
#++
|
280
|
+
# Rails.application.config.dom_testing_default_html_version = :html5
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
1
3
|
# Define an application-wide HTTP permissions policy. For further
|
2
|
-
# information see https://developers.google.com/web/updates/2018/06/feature-policy
|
3
|
-
|
4
|
-
# Rails.application.config.permissions_policy do |
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
4
|
+
# information see: https://developers.google.com/web/updates/2018/06/feature-policy
|
5
|
+
|
6
|
+
# Rails.application.config.permissions_policy do |policy|
|
7
|
+
# policy.camera :none
|
8
|
+
# policy.gyroscope :none
|
9
|
+
# policy.microphone :none
|
10
|
+
# policy.usb :none
|
11
|
+
# policy.fullscreen :self
|
12
|
+
# policy.payment :self, "https://secure.example.com"
|
11
13
|
# end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
# Files in the config/locales directory are used for internationalization
|
2
|
-
#
|
3
|
-
#
|
1
|
+
# Files in the config/locales directory are used for internationalization and
|
2
|
+
# are automatically loaded by Rails. If you want to use locales other than
|
3
|
+
# English, add the necessary files in this directory.
|
4
4
|
#
|
5
5
|
# To use the locales, use `I18n.t`:
|
6
6
|
#
|
@@ -16,18 +16,16 @@
|
|
16
16
|
#
|
17
17
|
# This would use the information in config/locales/es.yml.
|
18
18
|
#
|
19
|
-
#
|
20
|
-
#
|
19
|
+
# To learn more about the API, please read the Rails Internationalization guide
|
20
|
+
# at https://guides.rubyonrails.org/i18n.html.
|
21
21
|
#
|
22
|
-
#
|
22
|
+
# Be aware that YAML interprets the following case-insensitive strings as
|
23
|
+
# booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings
|
24
|
+
# must be quoted to be interpreted as strings. For example:
|
23
25
|
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
# "true": "foo"
|
28
|
-
#
|
29
|
-
# To learn more, please read the Rails Internationalization guide
|
30
|
-
# available at https://guides.rubyonrails.org/i18n.html.
|
26
|
+
# en:
|
27
|
+
# "yes": yup
|
28
|
+
# enabled: "ON"
|
31
29
|
|
32
30
|
en:
|
33
31
|
hello: "Hello world"
|
@@ -1,43 +1,44 @@
|
|
1
|
+
# This configuration file will be evaluated by Puma. The top-level methods that
|
2
|
+
# are invoked here are part of Puma's configuration DSL. For more information
|
3
|
+
# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.
|
4
|
+
|
1
5
|
# Puma can serve each request in a thread from an internal thread pool.
|
2
6
|
# The `threads` method setting takes two numbers: a minimum and maximum.
|
3
7
|
# Any libraries that use thread pools should be configured to match
|
4
8
|
# the maximum value specified for Puma. Default is set to 5 threads for minimum
|
5
9
|
# and maximum; this matches the default thread size of Active Record.
|
6
|
-
#
|
7
10
|
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
|
8
11
|
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
|
9
12
|
threads min_threads_count, max_threads_count
|
10
13
|
|
14
|
+
rails_env = ENV.fetch("RAILS_ENV") { "development" }
|
15
|
+
|
16
|
+
if rails_env == "production"
|
17
|
+
# If you are running more than 1 thread per process, the workers count
|
18
|
+
# should be equal to the number of processors (CPU cores) in production.
|
19
|
+
#
|
20
|
+
# It defaults to 1 because it's impossible to reliably detect how many
|
21
|
+
# CPU cores are available. Make sure to set the `WEB_CONCURRENCY` environment
|
22
|
+
# variable to match the number of processors.
|
23
|
+
worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { 1 })
|
24
|
+
if worker_count > 1
|
25
|
+
workers worker_count
|
26
|
+
else
|
27
|
+
preload_app!
|
28
|
+
end
|
29
|
+
end
|
11
30
|
# Specifies the `worker_timeout` threshold that Puma will use to wait before
|
12
31
|
# terminating a worker in development environments.
|
13
|
-
#
|
14
32
|
worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"
|
15
33
|
|
16
34
|
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
|
17
|
-
#
|
18
35
|
port ENV.fetch("PORT") { 3000 }
|
19
36
|
|
20
37
|
# Specifies the `environment` that Puma will run in.
|
21
|
-
|
22
|
-
environment ENV.fetch("RAILS_ENV") { "development" }
|
38
|
+
environment rails_env
|
23
39
|
|
24
40
|
# Specifies the `pidfile` that Puma will use.
|
25
41
|
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
|
26
42
|
|
27
|
-
# Specifies the number of `workers` to boot in clustered mode.
|
28
|
-
# Workers are forked web server processes. If using threads and workers together
|
29
|
-
# the concurrency of the application would be max `threads` * `workers`.
|
30
|
-
# Workers do not work on JRuby or Windows (both of which do not support
|
31
|
-
# processes).
|
32
|
-
#
|
33
|
-
# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
|
34
|
-
|
35
|
-
# Use the `preload_app!` method when specifying a `workers` number.
|
36
|
-
# This directive tells Puma to first boot the application and load code
|
37
|
-
# before forking the application. This takes advantage of Copy On Write
|
38
|
-
# process behavior so workers use less memory.
|
39
|
-
#
|
40
|
-
# preload_app!
|
41
|
-
|
42
43
|
# Allow puma to be restarted by `bin/rails restart` command.
|
43
44
|
plugin :tmp_restart
|
@@ -1,6 +1,10 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
3
3
|
|
4
|
+
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
|
5
|
+
# Can be used by load balancers and uptime monitors to verify that the app is live.
|
6
|
+
get "up" => "rails/health#show", as: :rails_health_check
|
7
|
+
|
4
8
|
# Defines the root path route ("/")
|
5
|
-
# root "
|
9
|
+
# root "posts#index"
|
6
10
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
-
# This file should
|
1
|
+
# This file should ensure the existence of records required to run the application in every environment (production,
|
2
|
+
# development, test). The code here should be idempotent so that it can be executed at any point in every environment.
|
2
3
|
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
|
3
4
|
#
|
4
|
-
#
|
5
|
+
# Example:
|
5
6
|
#
|
6
|
-
#
|
7
|
-
#
|
7
|
+
# ["Action", "Comedy", "Drama", "Horror"].each do |genre_name|
|
8
|
+
# MovieGenre.find_or_create_by!(name: genre_name)
|
9
|
+
# end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
|
2
|
+
|
3
|
+
# Ignore git directory.
|
4
|
+
/.git/
|
5
|
+
|
6
|
+
# Ignore bundler config.
|
7
|
+
/.bundle
|
8
|
+
|
9
|
+
# Ignore all environment files (except templates).
|
10
|
+
/.env*
|
11
|
+
!/.env*.erb
|
12
|
+
|
13
|
+
# Ignore all default key files.
|
14
|
+
/config/master.key
|
15
|
+
/config/credentials/*.key
|
16
|
+
|
17
|
+
# Ignore all logfiles and tempfiles.
|
18
|
+
/log/*
|
19
|
+
/tmp/*
|
20
|
+
<% if keeps? -%>
|
21
|
+
!/log/.keep
|
22
|
+
!/tmp/.keep
|
23
|
+
|
24
|
+
# Ignore pidfiles, but keep the directory.
|
25
|
+
/tmp/pids/*
|
26
|
+
!/tmp/pids/.keep
|
27
|
+
<% end -%>
|
28
|
+
|
29
|
+
# Ignore storage (uploaded files in development and any SQLite databases).
|
30
|
+
/storage/*
|
31
|
+
<% if keeps? -%>
|
32
|
+
!/storage/.keep
|
33
|
+
/tmp/storage/*
|
34
|
+
!/tmp/storage/.keep
|
35
|
+
<% end -%>
|
36
|
+
<% unless options.api? -%>
|
37
|
+
|
38
|
+
# Ignore assets.
|
39
|
+
/node_modules/
|
40
|
+
/app/assets/builds/*
|
41
|
+
!/app/assets/builds/.keep
|
42
|
+
/public/assets
|
43
|
+
<% end -%>
|
@@ -7,12 +7,10 @@
|
|
7
7
|
# Ignore bundler config.
|
8
8
|
/.bundle
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
/db/*.sqlite3-*
|
10
|
+
# Ignore all environment files (except templates).
|
11
|
+
/.env*
|
12
|
+
!/.env*.erb
|
14
13
|
|
15
|
-
<% end -%>
|
16
14
|
# Ignore all logfiles and tempfiles.
|
17
15
|
/log/*
|
18
16
|
/tmp/*
|
@@ -26,8 +24,7 @@
|
|
26
24
|
!/tmp/pids/.keep
|
27
25
|
<% end -%>
|
28
26
|
|
29
|
-
|
30
|
-
# Ignore uploaded files in development.
|
27
|
+
# Ignore storage (uploaded files in development and any SQLite databases).
|
31
28
|
/storage/*
|
32
29
|
<% if keeps? -%>
|
33
30
|
!/storage/.keep
|
@@ -35,7 +32,6 @@
|
|
35
32
|
!/tmp/storage/
|
36
33
|
!/tmp/storage/.keep
|
37
34
|
<% end -%>
|
38
|
-
<% end -%>
|
39
35
|
<% unless options.api? -%>
|
40
36
|
|
41
37
|
/public/assets
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= node_version %>
|
data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
module ApplicationCable
|
4
|
+
class ConnectionTest < ActionCable::Connection::TestCase
|
5
|
+
# test "connects with cookies" do
|
6
|
+
# cookies.signed[:user_id] = 42
|
7
|
+
#
|
8
|
+
# connect
|
9
|
+
#
|
10
|
+
# assert_equal connection.user_id, "42"
|
11
|
+
# end
|
12
|
+
end
|
11
13
|
end
|
@@ -2,18 +2,20 @@ ENV["RAILS_ENV"] ||= "test"
|
|
2
2
|
require_relative "../config/environment"
|
3
3
|
require "rails/test_help"
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
module ActiveSupport
|
6
|
+
class TestCase
|
7
|
+
# Run tests in parallel with specified workers
|
7
8
|
<% if Process.respond_to?(:fork) && !Gem.win_platform? -%>
|
8
|
-
|
9
|
+
parallelize(workers: :number_of_processors)
|
9
10
|
<%- else -%>
|
10
|
-
|
11
|
+
parallelize(workers: :number_of_processors, with: :threads)
|
11
12
|
<% end -%>
|
12
13
|
|
13
14
|
<% unless options[:skip_active_record] -%>
|
14
|
-
|
15
|
-
|
15
|
+
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
|
16
|
+
fixtures :all
|
16
17
|
|
17
18
|
<% end -%>
|
18
|
-
|
19
|
+
# Add more helper methods to be used by all tests here...
|
20
|
+
end
|
19
21
|
end
|
@@ -6,6 +6,7 @@ module Rails
|
|
6
6
|
module Generators
|
7
7
|
class BenchmarkGenerator < NamedBase
|
8
8
|
IPS_GEM_NAME = "benchmark-ips"
|
9
|
+
IPS_GEM_USED_REGEXP = /gem.*\b#{IPS_GEM_NAME}\b.*/
|
9
10
|
|
10
11
|
argument :reports, type: :array, default: ["before", "after"]
|
11
12
|
|
@@ -21,7 +22,7 @@ module Rails
|
|
21
22
|
|
22
23
|
def ips_installed?
|
23
24
|
in_root do
|
24
|
-
return File.read("Gemfile").match?(
|
25
|
+
return File.read("Gemfile").match?(IPS_GEM_USED_REGEXP)
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Description:
|
2
2
|
Generates a new controller and its views. Pass the controller name, either
|
3
|
-
CamelCased or under_scored, and a list of
|
3
|
+
CamelCased or under_scored, and a list of actions as arguments.
|
4
4
|
|
5
5
|
To create a controller within a module, specify the controller name as a
|
6
6
|
path like 'parent_module/controller_name'.
|
@@ -8,11 +8,19 @@ Description:
|
|
8
8
|
This generates a controller class in app/controllers and invokes helper,
|
9
9
|
template engine, assets, and test framework generators.
|
10
10
|
|
11
|
-
|
12
|
-
`bin/rails generate controller
|
11
|
+
Examples:
|
12
|
+
`bin/rails generate controller credit_cards open debit credit close`
|
13
13
|
|
14
|
-
|
14
|
+
This generates a `CreditCardsController` with routes like /credit_cards/debit.
|
15
15
|
Controller: app/controllers/credit_cards_controller.rb
|
16
16
|
Test: test/controllers/credit_cards_controller_test.rb
|
17
17
|
Views: app/views/credit_cards/debit.html.erb [...]
|
18
18
|
Helper: app/helpers/credit_cards_helper.rb
|
19
|
+
|
20
|
+
`bin/rails generate controller users index --skip-routes`
|
21
|
+
|
22
|
+
This generates a `UsersController` with an index action and no routes.
|
23
|
+
|
24
|
+
`bin/rails generate controller admin/dashboard --parent=admin_controller`
|
25
|
+
|
26
|
+
This generates a `Admin::DashboardController` with an `AdminController` parent class.
|
@@ -6,6 +6,7 @@ module Rails
|
|
6
6
|
argument :actions, type: :array, default: [], banner: "action action"
|
7
7
|
class_option :skip_routes, type: :boolean, desc: "Don't add routes to config/routes.rb."
|
8
8
|
class_option :helper, type: :boolean
|
9
|
+
class_option :parent, type: :string, default: "ApplicationController", desc: "The parent class for the generated controller"
|
9
10
|
|
10
11
|
check_class_collision suffix: "Controller"
|
11
12
|
|
@@ -25,6 +26,10 @@ module Rails
|
|
25
26
|
end
|
26
27
|
|
27
28
|
private
|
29
|
+
def parent_class_name
|
30
|
+
options[:parent]
|
31
|
+
end
|
32
|
+
|
28
33
|
def file_name
|
29
34
|
@_file_name ||= remove_possible_suffix(super)
|
30
35
|
end
|