diff --git a/pagetop/src/app/application.rs b/pagetop/src/app/application.rs index 293b1e0d..db912a99 100644 --- a/pagetop/src/app/application.rs +++ b/pagetop/src/app/application.rs @@ -19,6 +19,9 @@ impl Application { // Rótulo de presentación. super::banner::print_on_startup(); + // Inicializa la configuración global. + LazyStatic::force(&super::config::SETTINGS); + // Inicia registro de trazas y eventos. LazyStatic::force(&super::tracing::TRACING); diff --git a/pagetop/src/config.rs b/pagetop/src/config.rs index dfb7df49..41d4d211 100644 --- a/pagetop/src/config.rs +++ b/pagetop/src/config.rs @@ -42,14 +42,15 @@ //! # Cómo añadir ajustes de configuración //! //! Para proporcionar a tu **aplicación** o **módulo** sus propios ajustes de configuración, añade -//! [*serde*](https://docs.rs/serde) en las dependencias de tu archivo *Cargo.toml*: +//! [*serde*](https://docs.rs/serde) en las dependencias de tu archivo *Cargo.toml* habilitando la +//! característica `derive`: //! //! ```toml //! [dependencies] //! serde = { version = "1.0", features = ["derive"] } //! ``` //! -//! Declara ([`LazyStatic`]) e inicializa tus nuevos ajustes con tipos seguros +//! Y luego declara ([`LazyStatic`]) e inicializa tus ajustes con tipos seguros //! ([`config::try_into()`](try_into)) y valores predefinidos //! ([`predefined_settings!`](crate::predefined_settings)): //! @@ -80,16 +81,19 @@ //! }); //! ``` //! -//! De hecho, así se declaran e inicializan los ajustes globales de la configuración -//! ([`SETTINGS`](crate::app::config::SETTINGS)). +//! De hecho, esta es la forma en la que se declaran e inicializan los ajustes globales de la +//! configuración ([`SETTINGS`](crate::app::config::SETTINGS)). //! //! Usa la sintaxis TOML para añadir tu nueva sección `[myapp]` en los archivos de configuración, -//! del mismo modo que `[log]` o `[server]` hacen para los ajustes globales +//! del mismo modo que se añaden `[log]` o `[server]` en los ajustes globales //! ([`Settings`](crate::app::config::Settings)). //! //! Se recomienda inicializar todos los ajustes con valores predefinidos, o utilizar la notación //! `Option` si van a ser tratados en el código como opcionales. //! +//! Si no pueden inicializarse correctamente los ajustes de configuración, entonces la aplicación +//! ejecutará un panic! y detendrá la ejecución. +//! //! Los ajustes de configuración siempre son de sólo lectura. //! //! @@ -186,7 +190,7 @@ where settings.set_default(key, *value).unwrap(); } match settings.try_into() { - Ok(c) => c, + Ok(s) => s, Err(e) => panic!("Error parsing settings: {}", e), } }