From 59fffa6a8a120a62e2fe503474528fc69341b294 Mon Sep 17 00:00:00 2001 From: Neil Williams Date: Sat, 16 Mar 2024 07:50:35 +0000 Subject: [PATCH] Configuring the environment name in Rails (#356) * Bumping rails versions to fix build issues locally * Added a new config option called 'environment', which allows you to overide the default config environment which is the Rails.env. This allows us to have multiple different environments, without having to worry about making custom rails environments --------- Co-authored-by: Neil Williams Co-authored-by: Chris LaRose --- README.md | 2 ++ lib/config.rb | 3 ++- lib/config/integrations/rails/railtie.rb | 2 +- lib/generators/config/templates/config.rb | 5 +++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fcecf3e4..119580fe 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,8 @@ which will generate customizable config file `config/initializers/config.rb` and You can now edit them to adjust to your needs. +> Note: By default, the config environment will match the Rails environment (`Rails.env`). This can be changed by setting `config.environment`. + ### Installing on Padrino Add the gem to your `Gemfile` and run `bundle install` to install it. Then edit `app.rb` and register `Config` diff --git a/lib/config.rb b/lib/config.rb index 0efde070..db06bcbc 100644 --- a/lib/config.rb +++ b/lib/config.rb @@ -27,7 +27,8 @@ module Config overwrite_arrays: true, merge_hash_arrays: false, validation_contract: nil, - evaluate_erb_in_yaml: true + evaluate_erb_in_yaml: true, + environment: nil ) def self.setup diff --git a/lib/config/integrations/rails/railtie.rb b/lib/config/integrations/rails/railtie.rb index 460fa5f3..6748c116 100644 --- a/lib/config/integrations/rails/railtie.rb +++ b/lib/config/integrations/rails/railtie.rb @@ -9,7 +9,7 @@ def preload # Parse the settings before any of the initializers Config.load_and_set_settings( - Config.setting_files(::Rails.root.join('config'), ::Rails.env) + Config.setting_files(::Rails.root.join('config'), Config.environment.nil? ? ::Rails.env : Config.environment.to_sym) ) end diff --git a/lib/generators/config/templates/config.rb b/lib/generators/config/templates/config.rb index 6ea74ecc..f6a222d0 100644 --- a/lib/generators/config/templates/config.rb +++ b/lib/generators/config/templates/config.rb @@ -15,6 +15,11 @@ # # config.overwrite_arrays = true + # Defines current environment, affecting which settings file will be loaded. + # Default: `Rails.env` + # + # config.environment = ENV.fetch('ENVIRONMENT', :development) + # Load environment variables from the `ENV` object and override any settings defined in files. # # config.use_env = false