From b4aadf43cd41005815e4e3b6389d538fcd5892da Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Mon, 3 Sep 2018 13:14:05 +0000 Subject: [PATCH] initializers: check that env vars declared in env.example are present If an environment variable is declared in `config/env.example`, but not present in the actual environment, the server initialization will raise an exception. Empty strings are allowed (because some values are relevant only in development or production). --- config/initializers/env_vars.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 config/initializers/env_vars.rb diff --git a/config/initializers/env_vars.rb b/config/initializers/env_vars.rb new file mode 100644 index 000000000..9046a8c80 --- /dev/null +++ b/config/initializers/env_vars.rb @@ -0,0 +1,13 @@ +# Ensure that the environment variables defined in the reference env vars file +# are present in the execution environment. +# +# This protects against an out-to-date environment leading to runtime errors. + +if ENV['RAILS_ENV'] != 'test' && File.basename($0) != 'rake' + reference_env_file = File.join('config', 'env.example') + Dotenv::Environment.new(Rails.root.join(reference_env_file)).each do |key, value| + if !ENV.key?(key.to_s) + raise "Configuration error: `#{key}` is not present in the process’ environment variables (declared in `#{reference_env_file}`)" + end + end +end