package sihl
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=574c73c97ea0bc57144853b28df6125855a040ef0378f3bf180b4331dde93f9d
sha512=92c474ed3b6609395799f77259fc424af37dcad53095773ca2f2cdd4757a1607a5b53b6594cd7b6ddabeb40ebba67bb9544ff0f31dc228c87cfe015afa520aaa
doc/sihl.core/Core/Configuration/index.html
Module Core.ConfigurationSource
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.