Skip to content
Figaro for Elixir
Elixir Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config
lib
test
.gitignore
.travis.yml
README.md
mix.exs
mix.lock
post.sh Prepare for deploy Jun 28, 2014

README.md

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.

Something went wrong with that request. Please try again.