Port of @laserlemon's Figaro gem to Elixir. Please see original project for additional details and history. Documentation is lifted from @laserlemon's gem verbatim (where applicable) in an effort to provide full feature parity.
Add Figaro as a dependency in your mix.exs file.
defp deps do
[{ :figaro, ">= 0.0.0" }]
endYou should also update your applications list to include Figaro:
def application do
[applications: [:figaro]]
endAfter you are done, run mix deps.get in your shell to fetch the dependencies.
Given the following configuration file:
# config/application.yml
foo: bar
baz: quxYou will have access to configuration values via Figaro.env:
iex> Figaro.env.foo
"bar"
iex> Figaro.env.baz
"qux"
iex> Figaro.env
%{foo: "bar", baz: "qux"}Figaro also sets ENV with values defined in application.yml:
iex> System.get_env("FOO")
"bar"
iex> System.get_env("BAZ")
"qux"Please note: ENV is a simple key/value store. All values will be converted
to strings. Deeply nested configuration structures are not possible.
Oftentimes, local configuration values change depending on your environment. In such cases, you can add environment-specific values to your configuration file:
# config/application.yml
foo: foo
bar: bar
test:
foo: sekret
bar: nowayYou can also nullify configuration values for a specific environment:
# config/application.yml
foo: foo
bar: bar
test:
foo: ~Assuming you are running from the test environment:
iex> System.get_env("FOO")
nil
iex> System.get_env("BAR")
"bar"Please note: The environment names (test above) are derived from Mix.env.
Any other keys defining nested configuration values will be ignored.