Enviable

View Source

Enviable is a small collection of functions to improve Elixir project configuration via environment variables as proposed under the 12-factor application model. It works well with configuration environment loaders like Dotenvy or Nvir and provides robust value conversion like jetenv.

Enviable 1.5 fixes several bugs, adds :upcase conversion for atom and safe_atom conversions, and adds the ability to configure the default behaviour for boolean case folding.

Usage

Enviable will typically be imported in config/runtime.exs after Config, but may be used anywhere that environment variables are read.

# config/runtime.exs
import Config
import Enviable

client = fetch_env!("CLIENT")
Dotenvy.source([".env", ".env.#{client}", get_env()], side_effect: &put_env/1)

config :my_app,
  key: fetch_env!("SECRET_KEY"),
  port: fetch_env_as_integer!("PORT"),
  ssl: get_env_as_boolean("SSL_ENABLED")

Info

When using Dotenvy, the use of a side_effect that calls System.put_env/1 is required, as Enviable works with the system environment variable table. Future versions of Enviable may offer ways to work with the default Dotenvy side effect.

Installation

Enviable can be installed by adding enviable to your list of dependencies in mix.exs:

def deps do
  [
    {:enviable, "~> 1.3"}
  ]
end

Documentation is found on HexDocs.

Semantic Versioning

Enviable follows Semantic Versioning 2.0.