Actualiza y simplifica la estructura del código

Revisión general del código fuente para asegurar los elementos que deben
ser públicos y estandarizar el uso de funciones globales.
This commit is contained in:
Manuel Cillero 2022-03-02 23:19:16 +01:00
parent 67952f6840
commit b6dd473578
34 changed files with 250 additions and 237 deletions

View file

@ -1,23 +0,0 @@
use crate::{Lazy, trace};
use crate::config::SETTINGS;
use unic_langid::LanguageIdentifier;
/// Almacena el Identificador de Idioma Unicode ([Unicode Language Identifier]
/// (https://unicode.org/reports/tr35/tr35.html#Unicode_language_identifier)) de
/// la aplicación, obtenido de `SETTINGS.app.language`.
pub static LANGID: Lazy<LanguageIdentifier> = Lazy::new(|| {
match SETTINGS.app.language.parse() {
Ok(language) => language,
Err(_) => {
trace::warn!(
"Failed to parse language \"{}\". {}. {}. {}.",
SETTINGS.app.language,
"Unicode Language Identifier not recognized",
"Using \"en-US\"",
"Check the settings file",
);
"en-US".parse().unwrap()
}
}
});

View file

@ -1,6 +1,7 @@
use crate::{Lazy, base, trace};
use crate::{Lazy, base, locale, trace};
use crate::config::SETTINGS;
use crate::core::{Server, all, server};
use crate::core::{Server, global, server};
use crate::core::theme::register_theme;
use crate::core::module::register_module;
use actix_web::middleware::normalize;
@ -32,11 +33,20 @@ pub fn run(bootstrap: Option<fn()>) -> Result<Server, std::io::Error> {
);
}
// Inicia la traza de la aplicación.
// Inicia registro de trazas y eventos.
Lazy::force(&server::tracing::TRACING);
// Asigna identificador de idioma.
Lazy::force(&server::langid::LANGID);
Lazy::force(&locale::LANGID);
// Registra los temas predefinidos.
register_theme(&base::theme::aliner::AlinerTheme);
register_theme(&base::theme::minimal::MinimalTheme);
register_theme(&base::theme::bootsier::BootsierTheme);
// Registra los módulos predeterminados.
register_module(&base::module::admin::AdminModule);
register_module(&base::module::user::UserModule);
// Ejecuta la función de inicio de la aplicación.
if bootstrap != None {
@ -54,8 +64,8 @@ pub fn run(bootstrap: Option<fn()>) -> Result<Server, std::io::Error> {
server::App::new()
.wrap(tracing_actix_web::TracingLogger)
.wrap(normalize::NormalizePath::new(normalize::TrailingSlash::Trim))
.configure(&all::themes)
.configure(&all::modules)
.configure(&global::themes)
.configure(&global::modules)
})
.bind(format!("{}:{}",
&SETTINGS.webserver.bind_address,

View file

@ -4,8 +4,5 @@ pub use actix_web::{
mod tracing;
mod langid;
pub use langid::LANGID;
mod main;
pub use main::run;

View file

@ -4,6 +4,19 @@ use crate::config::SETTINGS;
use tracing_appender::non_blocking::WorkerGuard;
use tracing_subscriber::EnvFilter;
/// Registro de trazas y eventos de la aplicación.
///
/// Para aumentar el rendimiento, un subproceso dedicado utiliza un sistema de
/// escritura sin bloqueo (*non-blocking writer*) que actúa periódicamente en
/// vez de enviar cada traza o evento al instante. Si el programa termina
/// abruptamente (por ejemplo, por un `panic!` o un `std::process::exit`), es
/// posible que algunas trazas o eventos no se envíen.
///
/// Puesto que las trazas o eventos registrados poco antes de la caída de una
/// aplicación suelen ser importantes para diagnosticar la causa del fallo, con
/// `Lazy<WorkerGuard>` se garantiza que todos los registros almacenados se
/// enviarán antes de terminar la ejecución.
pub static TRACING: Lazy<WorkerGuard> = Lazy::new(|| {
let env_filter = EnvFilter::try_new(&SETTINGS.log.tracing)
.unwrap_or(EnvFilter::new("Info"));