ModuleConfig
A simple set of macros to help with module-specific configuration.
A common idiom in Elixir is to group configuration based on the module or subsystem where it is used. This looks something like the following:
config :my_app, MyModule,
value1: :foo,
value2: :bar
Retrieving those values with Application.get_env/3 can be cumbersome, since
what you get back is not a single value, but a keyword list. ModuleConfig
is a set of macros that make working with those values a bit easier.
To use it, use ModuleConfig in your module and pass the name of your app:
defmodule MyApp.MyModule do
use ModuleConfig, otp_app: :my_app
# ...
end
Now you can call config/1 to retrive the full configuration for that module
as a map. You can optionally pass a keyword list of overrides that will be
merged into the stored configuration.
config = config()
config.value1
# OR
config = config(other_value: :foo)
config.other_value
If you only want a single value, you can call get_config/2, which will
return a single value.
value = get_config(:value1)
# OR
value = get_config(:value1, :default)
Installation
The package can be installed by adding module_config to your list of
dependencies in mix.exs:
def deps do
[
{:module_config, "~> 1.0.0"}
]
end
The docs can be found at https://hexdocs.pm/module_config.