Modes in environment variable

This commit is contained in:
Antério Vieira 2020-06-30 21:23:29 -03:00
parent d6ee6871f2
commit adadc05ceb
1 changed files with 21 additions and 10 deletions

View File

@ -116,20 +116,31 @@ Existing envs take precendence of envs that are loaded later.
The [convention](https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use)
for managing multiple environments (i.e. development, test, production)
is to create an env named `{YOURAPP}_ENV` and load envs in this order:
is to create an env named `APP_ENV` and load envs in this order:
```go
env := os.Getenv("FOO_ENV")
if "" == env {
env = "development"
env := os.Getenv("APP_ENV")
if env == "" {
env = "development"
}
godotenv.Load(".env." + env + ".local")
if "test" != env {
godotenv.Load(".env.local")
}
godotenv.Load(".env." + env)
godotenv.Load() // The Original .env
base := ".env" // .env
local := base + ".local" // .env.local
mode := base + "." + env // .env.[mode]
localM := mode + ".local" // .env.[mode].local
godotenv.Load(localM)
godotenv.Load(mode)
godotenv.Load(local)
godotenv.Load(base)
```
Sometimes you might have env variables that should not be committed into the codebase, especially if your project is hosted in a public repository. In this case you must add the following snippet in your `.gitignore` file:
```gitignore
# local env files
.env.local
.env.*.local
```
If you need to, you can also use `godotenv.Overload()` to defy this convention