This project is based on figaro gem for Rails written by Steve Richert.
It's was created to manage ENV
configuration for Elixir
applications.
Figaro parses a git-ignored YAML
file in your application and loads its values into environmental variables.
This is very handy for production environments when you don't want to store some of credentials in your repository.
Add Figaro Elixir as a dependency in your mix.exs
file.
defp deps do
[
# ...
{:figaro_elixir, "~> 1.0.0"}
]
end
You should also update your applications list to include Figaro:
def application do
[
applications: [
# ...
:figaro_elixir
]
]
end
Once you've done that, run mix deps.get
in your command line to fetch the dependency.
The basic requirement is to have application.yml
file in your project config
directory.
Figaro
will read it, parse it and use it to store environmental variables.
Please note that ENV
is a simple key/value store with the following features:
- all values are converted to strings
- deeply nested configuration structures are not possible
You can very easily start using Figaro
for Elixir
. Just create an appropriate file:
# config/application.yml
foo: bar
baz: qux
And run iex -S mix
in your terminal. You will have an access to configuration values via FigaroElixir.env
or System
environmental variables:
iex(1)> FigaroElixir.env
%{"baz" => "qux", "foo" => "bar"}
iex(2)> FigaroElixir.env["baz"]
"qux"
iex(3)> System.get_env("foo")
nil
iex(4)> System.get_env("FOO")
"bar"
Keep in mind that system environmental variables keys are uppercased.
The power of Figaro
elixir comes from distinguishing environments based on Mix.env
property.
You may have a file defined like this:
a: a
b: ~
test:
c: 1
d: ~
And then after running MIX_ENV=test iex -S mix
you will see:
iex(1)> FigaroElixir.env
%{"a" => "a", "b" => "~", "c" => "1", "d" => "~"}
iex(2)> FigaroElixir.env["c"]
"1"
iex(3)> System.get_env("C")
"1"
That's it. You don't have to do anything more.
If you are using escript
build tool, you need to have :mix
among your apps
in mix.exs
file and copy application.yml
file to your rel/project_name/config
directory.
My name is Kamil Lelonek, I'm a full-stack developer and polyglot programmer. I love playing with different languages, technologies and tools. You can visit my website read my blog or follow me on twitter. In case of any problems or suggestions do not hesitate and create a pull request.