package sihl
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=77f0813d75a88edd14b3396e8b848d94c31c28803299b4b1bd4b78b1de4a2e80
sha512=a8907bc35ea14b7c3a7d638979a2a274860202b2de58b84b5621a4908db001ace493d8aa2e5383f4c8b1847efd256938592f63ef75a41521284b3640d3a7442a
doc/sihl.core/Sihl_core/Configuration/index.html
Module Sihl_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 test
, .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 is running in a test environment, meaning if tests are executing parts of Sihl.
is_production ()
returns true if Sihl is running in a production environment.