aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2016-05-21 15:07:06 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2016-05-21 15:07:23 +0200
commite530534265d2c32b5c5f772e81cb9002dcf5e9cf (patch)
tree2cc14afa54e1e538778031db1ee229639705c3e0 /railties/lib
parent85ee483fe12f2b0fc9b7fc310b538839596bc46d (diff)
downloadrails-e530534265d2c32b5c5f772e81cb9002dcf5e9cf.tar.gz
rails-e530534265d2c32b5c5f772e81cb9002dcf5e9cf.tar.bz2
rails-e530534265d2c32b5c5f772e81cb9002dcf5e9cf.zip
Added a shared section to config/secrets.yml that will be loaded for all environments
Diffstat (limited to 'railties/lib')
-rw-r--r--railties/lib/rails/application.rb11
-rw-r--r--railties/lib/rails/generators/rails/app/templates/config/secrets.yml8
2 files changed, 16 insertions, 3 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index ed106c9918..c383de3e06 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -385,11 +385,16 @@ module Rails
def secrets
@secrets ||= begin
secrets = ActiveSupport::OrderedOptions.new
- yaml = config.paths["config/secrets"].first
+ yaml = config.paths["config/secrets"].first
+
if File.exist?(yaml)
require "erb"
- all_secrets = YAML.load(ERB.new(IO.read(yaml)).result) || {}
- env_secrets = all_secrets[Rails.env]
+
+ all_secrets = YAML.load(ERB.new(IO.read(yaml)).result) || {}
+ shared_secrets = all_secrets['shared']
+ env_secrets = all_secrets[Rails.env]
+
+ secrets.merge!(shared_secrets.symbolize_keys) if shared_secrets
secrets.merge!(env_secrets.symbolize_keys) if env_secrets
end
diff --git a/railties/lib/rails/generators/rails/app/templates/config/secrets.yml b/railties/lib/rails/generators/rails/app/templates/config/secrets.yml
index cdea2fd060..8e995a5df1 100644
--- a/railties/lib/rails/generators/rails/app/templates/config/secrets.yml
+++ b/railties/lib/rails/generators/rails/app/templates/config/secrets.yml
@@ -10,6 +10,13 @@
# Make sure the secrets in this file are kept private
# if you're sharing your code publicly.
+# Shared secrets are available across all environments.
+
+shared:
+ api_key: 123
+
+# Environmental secrets are only available for that specific environment.
+
development:
secret_key_base: <%= app_secret %>
@@ -18,5 +25,6 @@ test:
# Do not keep production secrets in the repository,
# instead read values from the environment.
+
production:
secret_key_base: <%%= ENV["SECRET_KEY_BASE"] %>