package sihl
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=574c73c97ea0bc57144853b28df6125855a040ef0378f3bf180b4331dde93f9d
sha512=92c474ed3b6609395799f77259fc424af37dcad53095773ca2f2cdd4757a1607a5b53b6594cd7b6ddabeb40ebba67bb9544ff0f31dc228c87cfe015afa520aaa
doc/sihl.core/Core/Configuration/index.html
Module Core.Configuration
Source
A module to manage service configurations.
An app’s configuration is everything that is likely to vary between deploys (staging, production, developer environments, etc).
This includes:
- Resource handles to the database, Memcached, and other backing services
- Credentials to external services such as Amazon S3 or Twitter
- Per-deploy values such as the canonical hostname for the deploy
(Source: https://12factor.net/config)
Configuration
A list of key-value pairs of strings representing the configuration key like SMTP_HOST and a value.
The configuration contains configuration data and a configuration schema.
make ?schema data
returns a configuration containing the configuration schema
and the configuration data
.
commands configurations
returns the list of CLI commands given a list of configurations.
Storing configuration
Configuration might come from various sources like .env files, environment variables or as data provided directly to services or the app.
A configuration is a list of key-value string pairs.
Reading configuration
Using the schema validator conformist it is easy to validate and decode configuration values. Conformist schemas can express a richer set of requirements than static types, which can be used in services to validate configurations at start time.
Validating configuration when starting services can lead to run-time exceptions, but they occur early in the app lifecycle. This minimizes the feedback loop and makes sure, that services start only with valid configuration.
project_root_path
contains the path to the root of the project/app. Its value is known at app start, thus not requiring it to be a function. It reads the value of PROJECT_ROOT_PATH
. If that env variable is not set, it reads the current working directory of the process.
read_env_file ()
reads an .env
file from the project root directory and returns the key-value pairs as data
. If SIHL_ENV
is set to testing
, .env.testing
is read. Otherwise .env
is read. If the file doesn't exist, empty data is returned.
read schema
returns the decoded, statically typed version of configuration t
of the schema
. This is used in services to declaratively define a valid configuration.
The configuration data t
is merged with the environment variable and, if present, an .env file.
It fails with Exception
and prints descriptive message of invalid configuration.
read_string key
returns the configuration value with key
if present. The function is memoized, the first call caches the returned value and subsequent calls are fast.
read_int key
returns the configuration value with key
if present. the first call caches the returned value and subsequent calls are fast.
read_bool key
returns the configuration value with key
if present. the first call caches the returned value and subsequent calls are fast.
is_testing ()
returns true if SIHL_ENV
is set to testing
.