♻️ [config] Inicializa la configuración global

This commit is contained in:
Manuel Cillero 2022-11-08 20:38:02 +01:00
parent 62cc2a6201
commit 65c290a240
2 changed files with 13 additions and 6 deletions

View file

@ -19,6 +19,9 @@ impl Application {
// Rótulo de presentación. // Rótulo de presentación.
super::banner::print_on_startup(); super::banner::print_on_startup();
// Inicializa la configuración global.
LazyStatic::force(&super::config::SETTINGS);
// Inicia registro de trazas y eventos. // Inicia registro de trazas y eventos.
LazyStatic::force(&super::tracing::TRACING); LazyStatic::force(&super::tracing::TRACING);

View file

@ -42,14 +42,15 @@
//! # Cómo añadir ajustes de configuración //! # 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 //! 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 //! ```toml
//! [dependencies] //! [dependencies]
//! serde = { version = "1.0", features = ["derive"] } //! 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<S>()`](try_into)) y valores predefinidos //! ([`config::try_into<S>()`](try_into)) y valores predefinidos
//! ([`predefined_settings!`](crate::predefined_settings)): //! ([`predefined_settings!`](crate::predefined_settings)):
//! //!
@ -80,16 +81,19 @@
//! }); //! });
//! ``` //! ```
//! //!
//! De hecho, así se declaran e inicializan los ajustes globales de la configuración //! De hecho, esta es la forma en la que se declaran e inicializan los ajustes globales de la
//! ([`SETTINGS`](crate::app::config::SETTINGS)). //! 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, //! 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)). //! ([`Settings`](crate::app::config::Settings)).
//! //!
//! Se recomienda inicializar todos los ajustes con valores predefinidos, o utilizar la notación //! Se recomienda inicializar todos los ajustes con valores predefinidos, o utilizar la notación
//! `Option<T>` si van a ser tratados en el código como opcionales. //! `Option<T>` 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. //! Los ajustes de configuración siempre son de sólo lectura.
//! //!
//! //!
@ -186,7 +190,7 @@ where
settings.set_default(key, *value).unwrap(); settings.set_default(key, *value).unwrap();
} }
match settings.try_into() { match settings.try_into() {
Ok(c) => c, Ok(s) => s,
Err(e) => panic!("Error parsing settings: {}", e), Err(e) => panic!("Error parsing settings: {}", e),
} }
} }