Handles fetching values from config with support for runtime ENV loading.
All credit goes to bitwalker, this module is copied from this gist.
Fetches a value from the config, or from the environment if {:system, "VAR"} is provided.
An optional default value can be provided if desired.
In your config/config.exs
:
# maybe you start your app with FOO_KEY=abcd
config :foo_app, :some_setting, {:system, "FOO_KEY"}
In your application:
EnvConfig.get(:foo_app, :some_setting) # => "abcd"
iex> {test_var, expected_value} = System.get_env |> Enum.take(1) |> List.first
...> Application.put_env(:myapp, :test_var, {:system, test_var})
...> ^expected_value = EnvConfig.get(:myapp, :test_var)
...> :ok
:ok
iex> Application.put_env(:myapp, :test_var2, 1)
...> 1 = EnvConfig.get(:myapp, :test_var2)
1
iex> :default = EnvConfig.get(:myapp, :missing_var, :default)
:default
If available in Hex, the package can be installed as:
- Add
env_config
to your list of dependencies inmix.exs
:
def deps do
[{:env_config, "~> 0.1.0"}]
end
- Ensure
env_config
is started before your application:
def application do
[applications: [:env_config]]
end