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" }]
end
You should also update your applications list to include Figaro:
def application do
[applications: [:figaro]]
end
After 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: qux
You 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: noway
You 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.