Home

Awesome

Figaro

Build Status Coverage Status

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.