Skip to content

akki91/ex_figaro

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Figaro for Elixir

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 99.2%
  • Shell 0.8%