Skip to content

Commit fbcc4bf

Browse files
committed
Deprecate secret_token, long since usurped by secret_key_base.
See the changelog entry. Remove `secrets.secret_token` from the bug report templates, since we don't accept bug reports for Rails versions that don't support a `secret_key_base`. [ claudiob & Kasper Timm Hansen ]
1 parent 204c040 commit fbcc4bf

File tree

5 files changed

+44
-2
lines changed

5 files changed

+44
-2
lines changed

activesupport/CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
* Deprecate `secrets.secret_token`.
2+
3+
The architecture for secrets had a big upgrade between Rails 3 and Rails 4,
4+
when the default changed from using `secret_token` to `secret_key_base`.
5+
6+
`secret_token` has been soft deprecated in documentation for four years
7+
but is still in place to support apps created before Rails 4.
8+
Deprecation warnings have been added to help developers upgrade their
9+
applications to `secret_key_base`.
10+
11+
*claudiob*, *Kasper Timm Hansen*
12+
113
* Return an instance of `HashWithIndifferentAccess` from `HashWithIndifferentAccess#transform_keys`.
214

315
*Yuji Yaginuma*

guides/bug_report_templates/action_controller_gem.rb

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
class TestApp < Rails::Application
2323
config.root = __dir__
2424
config.session_store :cookie_store, key: "cookie_store_key"
25-
secrets.secret_token = "secret_token"
2625
secrets.secret_key_base = "secret_key_base"
2726

2827
config.logger = Logger.new($stdout)

guides/bug_report_templates/action_controller_master.rb

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
class TestApp < Rails::Application
2222
config.root = __dir__
23-
secrets.secret_token = "secret_token"
2423
secrets.secret_key_base = "secret_key_base"
2524

2625
config.logger = Logger.new($stdout)

railties/lib/rails/application.rb

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require "active_support/key_generator"
77
require "active_support/message_verifier"
88
require "active_support/encrypted_configuration"
9+
require "active_support/deprecation"
910
require_relative "engine"
1011
require_relative "secrets"
1112

@@ -398,6 +399,11 @@ def secrets
398399
# Fallback to config.secret_token if secrets.secret_token isn't set
399400
secrets.secret_token ||= config.secret_token
400401

402+
if secrets.secret_token.present?
403+
ActiveSupport::Deprecation.warn \
404+
"`secrets.secret_token` is deprecated in favor of `secret_key_base` and will be removed in Rails 6.0."
405+
end
406+
401407
secrets
402408
end
403409
end

railties/test/application/configuration_test.rb

+26
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,32 @@ def index
487487
assert_equal "some_value", Rails.application.message_verifier(:sensitive_value).verify(message)
488488
end
489489

490+
test "config.secret_token is deprecated" do
491+
app_file "config/initializers/secret_token.rb", <<-RUBY
492+
Rails.application.config.secret_token = "b3c631c314c0bbca50c1b2843150fe33"
493+
RUBY
494+
495+
app "production"
496+
497+
assert_deprecated(/secret_token/) do
498+
app.secrets
499+
end
500+
end
501+
502+
test "secrets.secret_token is deprecated" do
503+
app_file "config/secrets.yml", <<-YAML
504+
production:
505+
secret_token: "b3c631c314c0bbca50c1b2843150fe33"
506+
YAML
507+
508+
app "production"
509+
510+
assert_deprecated(/secret_token/) do
511+
app.secrets
512+
end
513+
end
514+
515+
490516
test "raises when secret_key_base is blank" do
491517
app_file "config/initializers/secret_token.rb", <<-RUBY
492518
Rails.application.credentials.secret_key_base = nil

0 commit comments

Comments
 (0)