Home
Head's Up: I'm in the middle of upgrading my site. Most things are in place, but there are something missing and/or broken including image alt text. Please bear with me while I'm getting things fixed.

Inverting The Order Of Environmental Variables In Configs

Playing with the idea of switching the heierarchy of environments and their variables in config files. For example, I'm doing this :

json
{
  "envars": {
    "database_host": {
      "dev": "freeside.cloud",
      "prod": "encom.cloud"
    },
    "database_name": {
      "dev": "gibson",
      "prod": "mcp"
    },
    "database_password": {
      "dev": "wintermute",
      "prod": "chess"
    },
    "database_username": {
      "dev": "william",
      "prod": "alan1"
    },
    "debug": {
      "dev": true,
      "prod": false
    },
    "log_level": {
      "dev": "INFO",
      "prod": "ERROR"
    }
  }
}

Instead of this :

json
{
  "envs": {
    "dev": {
      "database_host": "freeside.cloud",
      "database_name": "gibson",
      "database_password": "wintermute",
      "database_username": "william",
      "debug": true,
      "log_level": "INFO"
    },
    "prod": {
      "database_host": "encom.cloud",
      "database_name": "mcp",
      "database_password": "chess",
      "database_username": "alan1",
      "debug": false,
      "log_level": "ERROR"
    }
  }
}

It's an interesting experiment. It makes things more verbose though. First, there's a lot more lines in the config itself for the same info. Then, in the code, you can't simply do [TODO: Code shorthand span ] to get an environment loaded. Each call has to have the env defined in it. For example :

python3
config = # Load the data
env = 'dev'

print(config.database_name[env])

instead of just being able to hit it with :

python3
config = # Load the data for just 'dev'

print(config.database_name)