railties 7.0.10 → 7.1.0.beta1

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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +565 -234
  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 +1 -1
  9. data/lib/rails/application/bootstrap.rb +12 -3
  10. data/lib/rails/application/configuration.rb +179 -67
  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 +40 -33
  14. data/lib/rails/application.rb +116 -31
  15. data/lib/rails/backtrace_cleaner.rb +1 -1
  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 +19 -38
  52. data/lib/rails/commands/server/server_command.rb +32 -31
  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 +5 -0
  61. data/lib/rails/engine.rb +36 -16
  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 +14 -28
  65. data/lib/rails/generators/app_base.rb +353 -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 +19 -1
  69. data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
  70. data/lib/rails/generators/generated_attribute.rb +2 -1
  71. data/lib/rails/generators/migration.rb +1 -2
  72. data/lib/rails/generators/model_helpers.rb +2 -1
  73. data/lib/rails/generators/rails/app/USAGE +15 -6
  74. data/lib/rails/generators/rails/app/app_generator.rb +84 -60
  75. data/lib/rails/generators/rails/app/templates/Dockerfile.tt +107 -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 +4 -17
  80. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +3 -3
  81. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +0 -2
  82. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +3 -3
  83. data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
  84. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +10 -2
  85. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +28 -24
  86. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +11 -7
  87. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +2 -0
  88. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +2 -2
  89. data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +1 -1
  90. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +223 -0
  91. data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -9
  92. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +11 -13
  93. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +10 -19
  94. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +4 -0
  95. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +6 -4
  96. data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +10 -0
  97. data/lib/rails/generators/rails/app/templates/dockerignore.tt +43 -0
  98. data/lib/rails/generators/rails/app/templates/gitignore.tt +1 -9
  99. data/lib/rails/generators/rails/app/templates/node-version.tt +1 -0
  100. data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +10 -8
  101. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +9 -7
  102. data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
  103. data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +2 -1
  104. data/lib/rails/generators/rails/controller/USAGE +12 -4
  105. data/lib/rails/generators/rails/controller/controller_generator.rb +5 -0
  106. data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -1
  107. data/lib/rails/generators/rails/credentials/credentials_generator.rb +29 -24
  108. data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
  109. data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
  110. data/lib/rails/generators/rails/migration/USAGE +21 -11
  111. data/lib/rails/generators/rails/model/model_generator.rb +4 -0
  112. data/lib/rails/generators/rails/plugin/USAGE +17 -6
  113. data/lib/rails/generators/rails/plugin/plugin_generator.rb +5 -15
  114. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +2 -2
  115. data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
  116. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -17
  117. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -2
  118. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +4 -4
  119. data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
  120. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -1
  121. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +1 -1
  122. data/lib/rails/generators/test_case.rb +2 -2
  123. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +1 -1
  124. data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +4 -1
  125. data/lib/rails/generators.rb +6 -14
  126. data/lib/rails/health_controller.rb +55 -0
  127. data/lib/rails/info.rb +1 -1
  128. data/lib/rails/info_controller.rb +31 -11
  129. data/lib/rails/mailers_controller.rb +15 -5
  130. data/lib/rails/rack/logger.rb +15 -12
  131. data/lib/rails/rackup/server.rb +15 -0
  132. data/lib/rails/railtie/configuration.rb +14 -1
  133. data/lib/rails/railtie.rb +18 -18
  134. data/lib/rails/ruby_version_check.rb +2 -0
  135. data/lib/rails/source_annotation_extractor.rb +67 -18
  136. data/lib/rails/tasks/engine.rake +8 -8
  137. data/lib/rails/tasks/framework.rake +4 -10
  138. data/lib/rails/tasks/log.rake +1 -1
  139. data/lib/rails/tasks/misc.rake +3 -14
  140. data/lib/rails/tasks/statistics.rake +5 -4
  141. data/lib/rails/tasks/tmp.rake +5 -5
  142. data/lib/rails/tasks/zeitwerk.rake +1 -1
  143. data/lib/rails/tasks.rb +0 -2
  144. data/lib/rails/templates/rails/mailers/email.html.erb +25 -0
  145. data/lib/rails/templates/rails/mailers/index.html.erb +14 -7
  146. data/lib/rails/templates/rails/mailers/mailer.html.erb +11 -5
  147. data/lib/rails/templates/rails/welcome/index.html.erb +1 -0
  148. data/lib/rails/test_help.rb +7 -7
  149. data/lib/rails/test_unit/line_filtering.rb +1 -1
  150. data/lib/rails/test_unit/reporter.rb +6 -2
  151. data/lib/rails/test_unit/runner.rb +36 -18
  152. data/lib/rails/test_unit/test_parser.rb +88 -0
  153. data/lib/rails/test_unit/testing.rake +13 -33
  154. data/lib/rails/version.rb +1 -1
  155. data/lib/rails.rb +15 -15
  156. metadata +69 -31
  157. data/RDOC_MAIN.rdoc +0 -97
  158. data/lib/rails/application/dummy_erb_compiler.rb +0 -18
  159. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +0 -143
  160. data/lib/rails/generators/rails/model/USAGE +0 -113
  161. data/lib/rails/tasks/middleware.rake +0 -9
  162. data/lib/rails/tasks/restart.rake +0 -9
@@ -0,0 +1,223 @@
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
+ # No longer add autoloaded paths into `$LOAD_PATH`. This means that you won't be able
13
+ # to manually require files that are managed by the autoloader, which you shouldn't do anyway.
14
+ # This reduce the size of the load path, making `require` faster if you don't use bootsnap, or reduce the size
15
+ # of the bootsnap cache if you use it.
16
+ # Rails.application.config.add_autoload_paths_to_load_path = false
17
+
18
+ # Remove the default X-Download-Options headers since it is used only by Internet Explorer.
19
+ # If you need to support Internet Explorer, add back `"X-Download-Options" => "noopen"`.
20
+ # Rails.application.config.action_dispatch.default_headers = {
21
+ # "X-Frame-Options" => "SAMEORIGIN",
22
+ # "X-XSS-Protection" => "0",
23
+ # "X-Content-Type-Options" => "nosniff",
24
+ # "X-Permitted-Cross-Domain-Policies" => "none",
25
+ # "Referrer-Policy" => "strict-origin-when-cross-origin"
26
+ # }
27
+
28
+ # Do not treat an `ActionController::Parameters` instance
29
+ # as equal to an equivalent `Hash` by default.
30
+ # Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality = false
31
+
32
+ # Active Record Encryption now uses SHA-256 as its hash digest algorithm. Important: If you have
33
+ # data encrypted with previous Rails versions, there are two scenarios to consider:
34
+ #
35
+ # 1. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA1 (the default
36
+ # before Rails 7.0), you need to configure SHA-1 for Active Record Encryption too:
37
+ # Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA1
38
+ # 2. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA256 (the new default
39
+ # in 7.0), then you need to configure SHA-256 for Active Record Encryption:
40
+ # Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA256
41
+ #
42
+ # If you don't currently have data encrypted with Active Record encryption, you can disable this setting to
43
+ # configure the default behavior starting 7.1+:
44
+ # Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = false
45
+
46
+ # No longer run after_commit callbacks on the first of multiple Active Record
47
+ # instances to save changes to the same database row within a transaction.
48
+ # Instead, run these callbacks on the instance most likely to have internal
49
+ # state which matches what was committed to the database, typically the last
50
+ # instance to save.
51
+ # Rails.application.config.active_record.run_commit_callbacks_on_first_saved_instances_in_transaction = false
52
+
53
+ # Configures SQLite with a strict strings mode, which disables double-quoted string literals.
54
+ #
55
+ # SQLite has some quirks around double-quoted string literals.
56
+ # It first tries to consider double-quoted strings as identifier names, but if they don't exist
57
+ # it then considers them as string literals. Because of this, typos can silently go unnoticed.
58
+ # For example, it is possible to create an index for a non existing column.
59
+ # See https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted for more details.
60
+ # Rails.application.config.active_record.sqlite3_adapter_strict_strings_by_default = true
61
+
62
+ # Disable deprecated singular associations names
63
+ # Rails.application.config.active_record.allow_deprecated_singular_associations_name = false
64
+
65
+ # Enable the Active Job `BigDecimal` argument serializer, which guarantees
66
+ # roundtripping. Without this serializer, some queue adapters may serialize
67
+ # `BigDecimal` arguments as simple (non-roundtrippable) strings.
68
+ #
69
+ # When deploying an application with multiple replicas, old (pre-Rails 7.1)
70
+ # replicas will not be able to deserialize `BigDecimal` arguments from this
71
+ # serializer. Therefore, this setting should only be enabled after all replicas
72
+ # have been successfully upgraded to Rails 7.1.
73
+ # Rails.application.config.active_job.use_big_decimal_serializer = true
74
+
75
+ # Specify if an `ArgumentError` should be raised if `Rails.cache` `fetch` or
76
+ # `write` are given an invalid `expires_at` or `expires_in` time.
77
+ # Options are `true`, and `false`. If `false`, the exception will be reported
78
+ # as `handled` and logged instead.
79
+ # Rails.application.config.active_support.raise_on_invalid_cache_expiration_time = true
80
+
81
+ # Specify whether Query Logs will format tags using the SQLCommenter format
82
+ # (https://open-telemetry.github.io/opentelemetry-sqlcommenter/), or using the legacy format.
83
+ # Options are `:legacy` and `:sqlcommenter`.
84
+ # Rails.application.config.active_record.query_log_tags_format = :sqlcommenter
85
+
86
+ # Specify the default serializer used by `MessageEncryptor` and `MessageVerifier`
87
+ # instances.
88
+ #
89
+ # The legacy default is `:marshal`, which is a potential vector for
90
+ # deserialization attacks in cases where a message signing secret has been
91
+ # leaked.
92
+ #
93
+ # In Rails 7.1, the new default is `:json_allow_marshal` which serializes and
94
+ # deserializes with `ActiveSupport::JSON`, but can fall back to deserializing
95
+ # with `Marshal` so that legacy messages can still be read.
96
+ #
97
+ # In Rails 7.2, the default will become `:json` which serializes and
98
+ # deserializes with `ActiveSupport::JSON` only.
99
+ #
100
+ # Alternatively, you can choose `:message_pack` or `:message_pack_allow_marshal`,
101
+ # which serialize with `ActiveSupport::MessagePack`. `ActiveSupport::MessagePack`
102
+ # can roundtrip some Ruby types that are not supported by JSON, and may provide
103
+ # improved performance, but it requires the `msgpack` gem.
104
+ #
105
+ # For more information, see
106
+ # https://guides.rubyonrails.org/v7.1/configuring.html#config-active-support-message-serializer
107
+ #
108
+ # If you are performing a rolling deploy of a Rails 7.1 upgrade, wherein servers
109
+ # that have not yet been upgraded must be able to read messages from upgraded
110
+ # servers, first deploy without changing the serializer, then set the serializer
111
+ # in a subsequent deploy.
112
+ # Rails.application.config.active_support.message_serializer = :json_allow_marshal
113
+
114
+ # Enable a performance optimization that serializes message data and metadata
115
+ # together. This changes the message format, so messages serialized this way
116
+ # cannot be read by older versions of Rails. However, messages that use the old
117
+ # format can still be read, regardless of whether this optimization is enabled.
118
+ #
119
+ # To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
120
+ # not yet been upgraded must be able to read messages from upgraded servers,
121
+ # leave this optimization off on the first deploy, then enable it on a
122
+ # subsequent deploy.
123
+ # Rails.application.config.active_support.use_message_serializer_for_metadata = true
124
+
125
+ # Set the maximum size for Rails log files.
126
+ #
127
+ # `config.load_defaults 7.1` does not set this value for environments other than
128
+ # development and test.
129
+ #
130
+ # if Rails.env.local?
131
+ # Rails.application.config.log_file_size = 100 * 1024 * 1024
132
+ # end
133
+
134
+ # Enable raising on assignment to attr_readonly attributes. The previous
135
+ # behavior would allow assignment but silently not persist changes to the
136
+ # database.
137
+ # Rails.application.config.active_record.raise_on_assign_to_attr_readonly = true
138
+
139
+ # Enable validating only parent-related columns for presence when the parent is mandatory.
140
+ # The previous behavior was to validate the presence of the parent record, which performed an extra query
141
+ # to get the parent every time the child record was updated, even when parent has not changed.
142
+ # Rails.application.config.active_record.belongs_to_required_validates_foreign_key = false
143
+
144
+ # Enable precompilation of `config.filter_parameters`. Precompilation can
145
+ # improve filtering performance, depending on the quantity and types of filters.
146
+ # Rails.application.config.precompile_filter_parameters = true
147
+
148
+ # Enable before_committed! callbacks on all enrolled records in a transaction.
149
+ # The previous behavior was to only run the callbacks on the first copy of a record
150
+ # if there were multiple copies of the same record enrolled in the transaction.
151
+ # Rails.application.config.active_record.before_committed_on_all_records = true
152
+
153
+ # Disable automatic column serialization into YAML.
154
+ # To keep the historic behavior, you can set it to `YAML`, however it is
155
+ # recommended to explicitly define the serialization method for each column
156
+ # rather than to rely on a global default.
157
+ # Rails.application.config.active_record.default_column_serializer = nil
158
+
159
+ # Enable a performance optimization that serializes Active Record models
160
+ # in a faster and more compact way.
161
+ #
162
+ # To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
163
+ # not yet been upgraded must be able to read caches from upgraded servers,
164
+ # leave this optimization off on the first deploy, then enable it on a
165
+ # subsequent deploy.
166
+ # Rails.application.config.active_record.marshalling_format_version = 7.1
167
+
168
+ # Run `after_commit` and `after_*_commit` callbacks in the order they are defined in a model.
169
+ # This matches the behaviour of all other callbacks.
170
+ # In previous versions of Rails, they ran in the inverse order.
171
+ # Rails.application.config.active_record.run_after_transaction_callbacks_in_order_defined = true
172
+
173
+ # Whether a `transaction` block is committed or rolled back when exited via `return`, `break` or `throw`.
174
+ #
175
+ # Rails.application.config.active_record.commit_transaction_on_non_local_return = true
176
+
177
+ # Controls when to generate a value for <tt>has_secure_token</tt> declarations.
178
+ #
179
+ # Rails.application.config.active_record.generate_secure_token_on = :initialize
180
+
181
+ # ** Please read carefully, this must be configured in config/application.rb **
182
+ # Change the format of the cache entry.
183
+ # Changing this default means that all new cache entries added to the cache
184
+ # will have a different format that is not supported by Rails 7.0
185
+ # applications.
186
+ # Only change this value after your application is fully deployed to Rails 7.1
187
+ # and you have no plans to rollback.
188
+ # When you're ready to change format, add this to `config/application.rb` (NOT
189
+ # this file):
190
+ # config.active_support.cache_format_version = 7.1
191
+
192
+ # Configure Action View to use HTML5 standards-compliant sanitizers when they are supported on your
193
+ # platform.
194
+ #
195
+ # `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action View to use HTML5-compliant
196
+ # sanitizers if they are supported, else fall back to HTML4 sanitizers.
197
+ #
198
+ # In previous versions of Rails, Action View always used `Rails::HTML4::Sanitizer` as its vendor.
199
+ #
200
+ # Rails.application.config.action_view.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
201
+
202
+ # Configure Action Text to use an HTML5 standards-compliant sanitizer when it is supported on your
203
+ # platform.
204
+ #
205
+ # `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action Text to use HTML5-compliant
206
+ # sanitizers if they are supported, else fall back to HTML4 sanitizers.
207
+ #
208
+ # In previous versions of Rails, Action Text always used `Rails::HTML4::Sanitizer` as its vendor.
209
+ #
210
+ # Rails.application.config.action_text.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
211
+
212
+ # Configure the log level used by the DebugExceptions middleware when logging
213
+ # uncaught exceptions during requests
214
+ # Rails.application.config.action_dispatch.debug_exception_log_level = :error
215
+
216
+ # Configure the test helpers in Action View, Action Dispatch, and rails-dom-testing to use HTML5
217
+ # parsers.
218
+ #
219
+ # Nokogiri::HTML5 isn't supported on JRuby, so JRuby applications must set this to :html4.
220
+ #
221
+ # In previous versions of Rails, these test helpers always used an HTML4 parser.
222
+ #
223
+ # 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 |f|
5
- # f.camera :none
6
- # f.gyroscope :none
7
- # f.microphone :none
8
- # f.usb :none
9
- # f.fullscreen :self
10
- # f.payment :self, "https://secure.example.com"
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
- # and are automatically loaded by Rails. If you want to use locales other
3
- # than English, add the necessary files in this directory.
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
- # The following keys must be escaped otherwise they will not be retrieved by
20
- # the default I18n backend:
19
+ # To learn more about the API, please read the Rails Internationalization guide
20
+ # at https://guides.rubyonrails.org/i18n.html.
21
21
  #
22
- # true, false, on, off, yes, no
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
- # Instead, surround them with single quotes.
25
- #
26
- # en:
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,34 @@
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
+ # Specifies that the worker count should equal the number of processors in production.
15
+ if ENV["RAILS_ENV"] == "production"
16
+ worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.physical_processor_count })
17
+ workers worker_count if worker_count > 1
18
+ end
19
+
11
20
  # Specifies the `worker_timeout` threshold that Puma will use to wait before
12
21
  # terminating a worker in development environments.
13
- #
14
22
  worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"
15
23
 
16
24
  # Specifies the `port` that Puma will listen on to receive requests; default is 3000.
17
- #
18
25
  port ENV.fetch("PORT") { 3000 }
19
26
 
20
27
  # Specifies the `environment` that Puma will run in.
21
- #
22
28
  environment ENV.fetch("RAILS_ENV") { "development" }
23
29
 
24
30
  # Specifies the `pidfile` that Puma will use.
25
31
  pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
26
32
 
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
33
  # Allow puma to be restarted by `bin/rails restart` command.
43
34
  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
9
  # root "articles#index"
6
10
  end
@@ -1,7 +1,9 @@
1
- # This file should contain all the record creation needed to seed the database with its default values.
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
- # Examples:
5
+ # Example:
5
6
  #
6
- # movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }])
7
- # Character.create(name: "Luke", movie: movies.first)
7
+ # ["Action", "Comedy", "Drama", "Horror"].each do |genre_name|
8
+ # MovieGenre.find_or_create_by!(name: genre_name)
9
+ # end
@@ -0,0 +1,10 @@
1
+ #!/bin/bash -e
2
+
3
+ <% unless skip_active_record? -%>
4
+ # If running the rails server then create or migrate existing database
5
+ if [ "${*}" == "./bin/rails server" ]; then
6
+ ./bin/rails db:prepare
7
+ fi
8
+
9
+ <% end -%>
10
+ exec "${@}"
@@ -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 default key files.
10
+ /config/master.key
11
+ /config/credentials/*.key
12
+
13
+ # Ignore all environment files.
14
+ /.env*
15
+ !/.env.example
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,6 @@
7
7
  # Ignore bundler config.
8
8
  /.bundle
9
9
 
10
- <% if sqlite3? -%>
11
- # Ignore the default SQLite database.
12
- /db/*.sqlite3
13
- /db/*.sqlite3-*
14
-
15
- <% end -%>
16
10
  # Ignore all logfiles and tempfiles.
17
11
  /log/*
18
12
  /tmp/*
@@ -26,8 +20,7 @@
26
20
  !/tmp/pids/.keep
27
21
  <% end -%>
28
22
 
29
- <% unless skip_active_storage? -%>
30
- # Ignore uploaded files in development.
23
+ # Ignore storage (uploaded files in development and any SQLite databases).
31
24
  /storage/*
32
25
  <% if keeps? -%>
33
26
  !/storage/.keep
@@ -35,7 +28,6 @@
35
28
  !/tmp/storage/
36
29
  !/tmp/storage/.keep
37
30
  <% end -%>
38
- <% end -%>
39
31
  <% unless options.api? -%>
40
32
 
41
33
  /public/assets
@@ -0,0 +1 @@
1
+ <%= node_version %>
@@ -1,11 +1,13 @@
1
1
  require "test_helper"
2
2
 
3
- class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
4
- # test "connects with cookies" do
5
- # cookies.signed[:user_id] = 42
6
- #
7
- # connect
8
- #
9
- # assert_equal connection.user_id, "42"
10
- # end
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
- class ActiveSupport::TestCase
6
- # Run tests in parallel with specified workers
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
- parallelize(workers: :number_of_processors)
9
+ parallelize(workers: :number_of_processors)
9
10
  <%- else -%>
10
- parallelize(workers: :number_of_processors, with: :threads)
11
+ parallelize(workers: :number_of_processors, with: :threads)
11
12
  <% end -%>
12
13
 
13
14
  <% unless options[:skip_active_record] -%>
14
- # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
15
- fixtures :all
15
+ # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
16
+ fixtures :all
16
17
 
17
18
  <% end -%>
18
- # Add more helper methods to be used by all tests here...
19
+ # Add more helper methods to be used by all tests here...
20
+ end
19
21
  end
@@ -4,6 +4,10 @@ module Rails
4
4
  module Generators
5
5
  class ApplicationRecordGenerator < Base # :nodoc:
6
6
  hook_for :orm, required: true, desc: "ORM to be invoked"
7
+
8
+ class << self
9
+ delegate(:desc, to: :orm_generator)
10
+ end
7
11
  end
8
12
  end
9
13
  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?(/gem.*\b#{IPS_GEM_NAME}\b.*/)
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 views as arguments.
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
- Example:
12
- `bin/rails generate controller CreditCards open debit credit close`
11
+ Examples:
12
+ `bin/rails generate controller credit_cards open debit credit close`
13
13
 
14
- CreditCards controller with URLs like /credit_cards/debit.
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
@@ -1,5 +1,5 @@
1
1
  <% module_namespacing do -%>
2
- class <%= class_name %>Controller < ApplicationController
2
+ class <%= class_name %>Controller < <%= parent_class_name.classify %>
3
3
  <% actions.each do |action| -%>
4
4
  def <%= action %>
5
5
  end