Configuration
Documentation / Configuration / Accès à la configuration dans le code

Accès à la configuration dans le code

Charger la configuration

use runique::config::RuniqueConfig;

let config = RuniqueConfig::from_env();

println!("Développement : {}", config.dev);
println!("Port: {}", config.server.port);

RuniqueConfig::from_env() lit le .env et l'environnement une fois, au démarrage. Ses principaux champs :

ChampContenu
config.devRUNIQUE_ENV=dev
config.debugDEBUG
config.serverip_server, port, secret_key, public_url (posé par .with_public_url(...))
config.static_filesDossiers et préfixes : templates, statiques, médias
config.securityHTTPS, HSTS, ACME
config.passwordLa PasswordConfig
config.timezoneTZ

Accès dans un handler

async fn my_handler(mut request: Request) -> AppResult<Response> {
    let config = &request.engine.config;

    context_update!(request => {
        "dev" => config.dev,
        "port" => config.server.port,
    });
    request.render("page.html")
}

Ne passez jamais config.server.secret_key à un template ni à un log : il signe les jetons CSRF et les sessions.


Configuration conditionnelle

if request.engine.config.dev {
    // Développement : templates relus à chaque requête, pas de contrôles au démarrage
} else {
    // Production
}

Hors d'un handler, is_dev() (dans le prelude) donne la même information. config.debug et is_debug() ne disent qu'une chose : les pages d'erreur détaillées sont-elles affichées.