lib/dotenv/beefy/railtie.rb in dotenv-beefy-0.1.0 vs lib/dotenv/beefy/railtie.rb in dotenv-beefy-0.2.0
- old
+ new
@@ -4,18 +4,42 @@
module Dotenv
module Beefy
class Railtie < Rails::Railtie
config.before_configuration { load_environments }
+ # Load environment dotfiles in the following order (e.g. if in "test" environment on "darwin")
+ # 1. .env.test.local
+ # 2. .env.darwin.local
+ # 3. .env.local
+ # 4. .env.test
+ # 5. .env.darwin
+ # 6. .env
+ #
+ # The order matters, because the files loaded first will "lock in" the value for that ENV var.
+ # Dotenv.load memoizes each ENV value, and if the value is set, it cannot be updated later.
+ # If you want to update ENV values as new values come in, you need to use Dotenv.overload(*files)
def load_environments
- files = environments.map { |env| ".env.#{env}" }
+ files = []
+
+ environments.each do |env|
+ files << ".env.#{env}.local"
+ end
+
+ # This is a dotenv-rails convention to ignore `.env.local` in a test environment
+ # @see https://github.com/bkeepers/dotenv/blob/c237d6d6291c898d8affb290b510c7aac49aed71/lib/dotenv/rails.rb#L66-L73
+ files << '.env.local' unless Rails.env.test?
+
+ environments.each do |env|
+ files << ".env.#{env}"
+ end
+
files << '.env'
+
Dotenv.load(*files)
end
def environments
[
- 'local',
Rails.env,
host_family
]
end