Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Variables de entorno

English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands

Los nombres de variables de entorno se declaran en el esquema con confique:

#![allow(unused)]
fn main() {
#[derive(Debug, Config)]
struct DatabaseConfig {
    #[config(env = "APP_DATABASE_URL")]
    url: String,

    #[config(default = 16)]
    #[config(env = "APP_DATABASE_POOL_SIZE")]
    pool_size: u32,
}
}

rust-config-tree lee esos nombres desde confique::Config::META y construye un proveedor Figment que mapea cada variable de entorno a su ruta exacta de campo.

No uses mapeo de entorno de Figment basado en delimitadores para este crate:

#![allow(unused)]
fn main() {
// Do not use this pattern for rust-config-tree schemas.
Env::prefixed("APP_").split("_")
Env::prefixed("APP_").split("__")
}

split("_") trata los guiones bajos como separadores de claves anidadas. Eso hace que APP_DATABASE_POOL_SIZE se convierta en una ruta como database.pool.size, que entra en conflicto con nombres de campos Rust como pool_size.

Con ConfiqueEnvProvider, este mapeo es explícito:

APP_DATABASE_POOL_SIZE -> database.pool_size

Los guiones bajos simples siguen siendo parte del nombre de variable de entorno. Figment no adivina la regla de anidamiento.

Carga dotenv

Antes de evaluar proveedores en tiempo de ejecución, el cargador busca un archivo .env caminando hacia arriba desde el directorio del archivo de configuración raíz.

Las variables de entorno existentes del proceso se conservan. Los valores de .env solo rellenan variables de entorno ausentes.

Ejemplo:

APP_SERVER_PORT=9000
APP_DATABASE_POOL_SIZE=64

Estas variables sobrescriben valores de archivos de configuración cuando el esquema declara atributos #[config(env = "...")] coincidentes.

Parseo de valores

El proveedor puente deja que Figment parsee los valores de entorno. No llama a los hooks parse_env de confique. Mantén valores complejos en archivos de configuración salvo que la sintaxis de valores de entorno de Figment encaje bien con el tipo.