TOML Config Provider
A config provider to read TOML configuration files that works with Elixir (1.9+) releases.
Note: If you are building releases with Distillery, you can use the config provider from the toml-elixir library.
Prerequisites
- Elixir >= 1.9
Installation
The package can be installed by adding toml_config
to your list of
dependencies in mix.exs
:
def deps do
[
{:toml_config, "~> 0.1"}
]
end
Usage
Update the release configuration in your mix.exs file:
You can either give a fully qualified pathname to the config file.
releases: [
my_app: [
config_providers: [
{TomlConfigProvider, path: "/absolute/path/to/my/config.toml"}
],
...
]
]
Or you can read the config directory or path from a specified environment variable. Booting the application fails if the specified environment variable is undefined.
releases: [
my_app: [
config_providers: [
{TomlConfigProvider,
path: {:system, "RELEASE_CONFIG_DIR", "my_app.toml"}}
],
...
]
]
Or:
releases: [
my_app: [
config_providers: [
{TomlConfigProvider, path: {:system, "RELEASE_CONFIG_PATH"}}
],
...
]
]
All config provider options except :path
are forwarded to Toml.decode_file/2
from the toml-elixir library. Thus,
you can also provide custom transforms.
config_providers: [
{TomlConfigProvider,
path: "path/to/my/config.toml",
transforms: [UrlTransform, TupleTransform]}
]
Other Implementations
toml
Config Provider
The toml package brings it's own config provider that unfortunately only works with distellery releases at the moment.
toml_config_provider
Unlike toml_config_provider, this library allows specifying the location of the config file through environment variables. This is quite useful when you have multiple (slightly different) instances of a release running on the same machine, such as staging and production environments. Additionally, we allow custom transform modules.
Docs
Documentation can be generated with ExDoc and is published on HexDocs.