aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/application.rb
diff options
context:
space:
mode:
authorRafael Mendonça França <rafael.franca@plataformatec.com.br>2014-11-10 20:38:46 -0200
committerRafael Mendonça França <rafael.franca@plataformatec.com.br>2014-11-10 20:38:46 -0200
commit091652cae8465711de3c12697a93c67a9f94576c (patch)
tree545a299c44c0cd034dae0d038005276bad4a4499 /railties/lib/rails/application.rb
parent82e20030d4dc022c3a25ecc82315bda553a8659d (diff)
parentdb5f1a46f26ed2b8359d3dde3398dd1a8ca443d4 (diff)
downloadrails-091652cae8465711de3c12697a93c67a9f94576c.tar.gz
rails-091652cae8465711de3c12697a93c67a9f94576c.tar.bz2
rails-091652cae8465711de3c12697a93c67a9f94576c.zip
Merge pull request #16535 from bf4/patch-1
Allow fallback to LegacyKeyGenerator when secret_key_base is not set but secrets.secret_token is
Diffstat (limited to 'railties/lib/rails/application.rb')
-rw-r--r--railties/lib/rails/application.rb20
1 files changed, 16 insertions, 4 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 18d9cb72d6..ae60337af2 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -178,7 +178,7 @@ module Rails
key_generator = ActiveSupport::KeyGenerator.new(secrets.secret_key_base, iterations: 1000)
ActiveSupport::CachingKeyGenerator.new(key_generator)
else
- ActiveSupport::LegacyKeyGenerator.new(config.secret_token)
+ ActiveSupport::LegacyKeyGenerator.new(secrets.secret_token)
end
end
@@ -248,7 +248,7 @@ module Rails
super.merge({
"action_dispatch.parameter_filter" => config.filter_parameters,
"action_dispatch.redirect_filter" => config.filter_redirect,
- "action_dispatch.secret_token" => config.secret_token,
+ "action_dispatch.secret_token" => secrets.secret_token,
"action_dispatch.secret_key_base" => secrets.secret_key_base,
"action_dispatch.show_exceptions" => config.action_dispatch.show_exceptions,
"action_dispatch.show_detailed_exceptions" => config.consider_all_requests_local,
@@ -381,6 +381,13 @@ module Rails
# Fallback to config.secret_key_base if secrets.secret_key_base isn't set
secrets.secret_key_base ||= config.secret_key_base
+ # Sync secrets.secret_token with config.secret_token, preferring secrets.secret_token
+ # note that unset config's default to "", secrets default to nil
+ if secrets.secret_token.blank? && config.secret_token.present?
+ secrets.secret_token = config.secret_token
+ elsif secrets.secret_token.present?
+ config.secret_token = secrets.secret_token
+ end
secrets
end
@@ -510,8 +517,13 @@ module Rails
end
def validate_secret_key_config! #:nodoc:
- if secrets.secret_key_base.blank? && config.secret_token.blank?
- raise "Missing `secret_key_base` for '#{Rails.env}' environment, set this value in `config/secrets.yml`"
+ if secrets.secret_key_base.blank?
+ ActiveSupport::Deprecation.warn "You didn't set `secret_key_base`. " +
+ "Read the upgrade documentation to learn more about this new config option."
+
+ if secrets.secret_token.blank?
+ raise "Missing `secret_token` and `secret_key_base` for '#{Rails.env}' environment, set these values in `config/secrets.yml`"
+ end
end
end
end