diff --git a/activesupport/lib/active_support/core_ext/digest.rb b/activesupport/lib/active_support/core_ext/digest.rb index a226bf2146..ce1427e13a 100644 --- a/activesupport/lib/active_support/core_ext/digest.rb +++ b/activesupport/lib/active_support/core_ext/digest.rb @@ -1,9 +1,3 @@ # frozen_string_literal: true require "active_support/core_ext/digest/uuid" - -module ActiveSupport - class << self - delegate :use_rfc4122_namespaced_uuids, :use_rfc4122_namespaced_uuids=, to: :'Digest::UUID' - end -end diff --git a/activesupport/lib/active_support/railtie.rb b/activesupport/lib/active_support/railtie.rb index d2405bb2c2..e4892e0308 100644 --- a/activesupport/lib/active_support/railtie.rb +++ b/activesupport/lib/active_support/railtie.rb @@ -133,7 +133,7 @@ module ActiveSupport config.after_initialize do if app.config.active_support.use_rfc4122_namespaced_uuids require "active_support/core_ext/digest" - ActiveSupport.use_rfc4122_namespaced_uuids = app.config.active_support.use_rfc4122_namespaced_uuids + ::Digest::UUID.use_rfc4122_namespaced_uuids = app.config.active_support.use_rfc4122_namespaced_uuids end end end diff --git a/activesupport/test/core_ext/digest/uuid_test.rb b/activesupport/test/core_ext/digest/uuid_test.rb index 8749b30f42..02eedff4a1 100644 --- a/activesupport/test/core_ext/digest/uuid_test.rb +++ b/activesupport/test/core_ext/digest/uuid_test.rb @@ -4,14 +4,6 @@ require_relative "../../abstract_unit" require "active_support/core_ext/digest" class DigestUUIDExt < ActiveSupport::TestCase - def with_use_rfc4122_namespaced_uuids_set - old_value = ActiveSupport.use_rfc4122_namespaced_uuids - ActiveSupport.use_rfc4122_namespaced_uuids = true - yield - ensure - ActiveSupport.use_rfc4122_namespaced_uuids = old_value - end - def test_constants assert_equal "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "%08x-%04x-%04x-%04x-%04x%08x" % Digest::UUID::DNS_NAMESPACE.unpack("NnnnnN") assert_equal "6ba7b811-9dad-11d1-80b4-00c04fd430c8", "%08x-%04x-%04x-%04x-%04x%08x" % Digest::UUID::URL_NAMESPACE.unpack("NnnnnN") @@ -184,4 +176,13 @@ class DigestUUIDExt < ActiveSupport::TestCase Digest::UUID.uuid_from_hash(OpenSSL::Digest::SHA256, Digest::UUID::OID_NAMESPACE, "1.2.3") end end + + private + def with_use_rfc4122_namespaced_uuids_set + old_value = Digest::UUID.use_rfc4122_namespaced_uuids + Digest::UUID.use_rfc4122_namespaced_uuids = true + yield + ensure + Digest::UUID.use_rfc4122_namespaced_uuids = old_value + end end diff --git a/guides/source/configuring.md b/guides/source/configuring.md index fd045cb04f..4733f7255c 100644 --- a/guides/source/configuring.md +++ b/guides/source/configuring.md @@ -1729,6 +1729,7 @@ Accepts a string for the HTML tag used to wrap attachments. Defaults to `"action - `config.active_support.cache_format_version`: `7.0` - `config.active_support.remove_deprecated_time_with_zone_name`: `true` - `config.active_support.executor_around_test_case`: `true` +- `config.active_support.use_rfc4122_namespaced_uuids`: `true` - `config.action_dispatch.return_only_request_media_type_on_content_type`: `false` - `config.action_controller.silence_disabled_session_errors`: `false` - `config.action_mailer.smtp_timeout`: `5` @@ -1816,6 +1817,7 @@ Accepts a string for the HTML tag used to wrap attachments. Defaults to `"action - `config.active_support.key_generator_hash_digest_class`: `OpenSSL::Digest::SHA1` - `config.active_support.cache_format_version`: `6.1` - `config.active_support.executor_around_test_case`: `false` +- ``config.active_support.use_rfc4122_namespaced_uuids``: `false` - `config.action_dispatch.return_only_request_media_type_on_content_type`: `true` - `ActiveSupport.utc_to_local_returns_utc_offset_times`: `false` - `config.action_mailer.smtp_timeout`: `nil` diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt index 579eeb67ff..43367fb97f 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt @@ -97,3 +97,10 @@ # Previously this was set in an initializer. It's fine to keep using that initializer if you've customized it. # To disable parameter wrapping entirely, set this config to `false`. # Rails.application.config.action_controller.wrap_parameters_by_default = true + +# Specifies whether generated namespaced UUIDs follow the RFC 4122 standard for namespace IDs provided as a +# `String` to `Digest::UUID.uuid_v3` or `Digest::UUID.uuid_v5` method calls. +# +# See https://guides.rubyonrails.org/configuring.html#config-active-support-use-rfc4122-namespaced-uuids for +# more information +# Rails.application.config.active_support.use_rfc4122_namespaced_uuids = true diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 159b71f779..7916f0ccb5 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -2422,18 +2422,18 @@ module ApplicationTests assert_equal 1234, ActiveSupport.test_parallelization_threshold end - test "ActiveSupport.use_rfc4122_namespaced_uuids is enabled by default for new apps" do + test "Digest::UUID.use_rfc4122_namespaced_uuids is enabled by default for new apps" do app "development" - assert_equal true, ActiveSupport.use_rfc4122_namespaced_uuids + assert_equal true, Digest::UUID.use_rfc4122_namespaced_uuids end - test "ActiveSupport.use_rfc4122_namespaced_uuids is disabled by default for upgraded apps" do + test "Digest::UUID.use_rfc4122_namespaced_uuids is disabled by default for upgraded apps" do remove_from_config '.*config\.load_defaults.*\n' app "development" - assert_equal false, ActiveSupport.use_rfc4122_namespaced_uuids + assert_equal false, Digest::UUID.use_rfc4122_namespaced_uuids end test "custom serializers should be able to set via config.active_job.custom_serializers in an initializer" do