Awesome
Figaro
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.
Getting Started
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.
Usage
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.
Environment-Specific Configuration
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.