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 d’environnement

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

Les noms de variables d’environnement sont declares dans le schema avec 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 lit ces noms depuis confique::Config::META et construit un fournisseur Figment qui associe chaque variable d’environnement a son chemin de champ exact.

N’utilisez pas le mapping d’environnement Figment base sur des delimiteurs avec cette crate :

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

split("_") traite les underscores comme des separateurs de cles imbriquees. Cela transforme APP_DATABASE_POOL_SIZE en un chemin comme database.pool.size, ce qui entre en conflit avec les noms de champs Rust comme pool_size.

Avec ConfiqueEnvProvider, ce mapping est explicite :

APP_DATABASE_POOL_SIZE -> database.pool_size

Les underscores simples restent une partie du nom de variable d’environnement. Figment ne devine pas la regle d’imbrication.

Chargement dotenv

Avant l’evaluation des fournisseurs d’execution, le chargeur cherche un fichier .env en remontant depuis le repertoire du fichier de configuration racine.

Les variables d’environnement deja presentes dans le processus sont conservees. Les valeurs de .env ne remplissent que les variables d’environnement manquantes.

Exemple :

APP_SERVER_PORT=9000
APP_DATABASE_POOL_SIZE=64

Ces variables remplacent les valeurs des fichiers de configuration lorsque le schema declare des attributs #[config(env = "...")] correspondants.

Analyse des valeurs

Le fournisseur passerelle laisse Figment analyser les valeurs d’environnement. Il n’appelle pas les hooks parse_env de confique. Gardez les valeurs complexes dans les fichiers de configuration sauf si la syntaxe de valeur d’environnement Figment convient au type.