Skip to content

Commit 5ab13c5

Browse files
authored
Merge pull request rails#51337 from fatkodima/secret_key_base-deprecation-in-development
Show warning for `secret_key_base` in development too
2 parents 8fad3b6 + b96b936 commit 5ab13c5

File tree

2 files changed

+38
-20
lines changed

2 files changed

+38
-20
lines changed

railties/lib/rails/application.rb

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -476,27 +476,30 @@ def secrets
476476
# then +credentials.secret_key_base+, and finally +secrets.secret_key_base+. For most applications,
477477
# the correct place to store it is in the encrypted credentials file.
478478
def secret_key_base
479-
if Rails.env.local? || ENV["SECRET_KEY_BASE_DUMMY"]
480-
config.secret_key_base ||= generate_local_secret
481-
else
482-
validate_secret_key_base(
483-
ENV["SECRET_KEY_BASE"] || credentials.secret_key_base || begin
484-
secret_skb = secrets_secret_key_base
485-
486-
if secret_skb.equal?(config.secret_key_base)
487-
config.secret_key_base
488-
else
489-
Rails.deprecator.warn(<<~MSG.squish)
490-
Your `secret_key_base` is configured in `Rails.application.secrets`,
491-
which is deprecated in favor of `Rails.application.credentials` and
492-
will be removed in Rails 7.2.
493-
MSG
494-
495-
secret_skb
479+
config.secret_key_base ||=
480+
if ENV["SECRET_KEY_BASE_DUMMY"]
481+
generate_local_secret
482+
else
483+
validate_secret_key_base(
484+
ENV["SECRET_KEY_BASE"] || credentials.secret_key_base || begin
485+
secret_skb = secrets_secret_key_base
486+
487+
if secret_skb && secret_skb.equal?(config.secret_key_base)
488+
config.secret_key_base
489+
elsif secret_skb
490+
Rails.deprecator.warn(<<~MSG.squish)
491+
Your `secret_key_base` is configured in `Rails.application.secrets`,
492+
which is deprecated in favor of `Rails.application.credentials` and
493+
will be removed in Rails 7.2.
494+
MSG
495+
496+
secret_skb
497+
elsif Rails.env.local?
498+
generate_local_secret
499+
end
496500
end
497-
end
498-
)
499-
end
501+
)
502+
end
500503
end
501504

502505
# Returns an ActiveSupport::EncryptedConfiguration instance for the

railties/test/application/configuration_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,7 @@ def index
930930
end
931931

932932
test "secrets.secret_key_base is used when config/secrets.yml is present" do
933+
remove_file "config/credentials.yml.enc"
933934
app_file "config/secrets.yml", <<-YAML
934935
development:
935936
secret_key_base: 3b7cd727ee24e8444053437c36cc66c3
@@ -966,6 +967,20 @@ def index
966967
end
967968
end
968969

970+
test "config.secret_key_base leads to a deprecation in development when config/secrets.yml is present" do
971+
remove_file "config/credentials.yml.enc"
972+
app_file "config/secrets.yml", <<-YAML
973+
development:
974+
secret_key_base: 3b7cd727ee24e8444053437c36cc66c3
975+
YAML
976+
977+
app "development"
978+
assert_deprecated(Rails.deprecator) do
979+
assert_equal "3b7cd727ee24e8444053437c36cc66c3", app.secrets.secret_key_base
980+
end
981+
assert_equal "3b7cd727ee24e8444053437c36cc66c3", app.secret_key_base
982+
end
983+
969984
test "custom secrets saved in config/secrets.yml are loaded in app secrets" do
970985
app_file "config/secrets.yml", <<-YAML
971986
development:

0 commit comments

Comments
 (0)