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" }]
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.
Usage
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.
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: 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.