📝 [config] Ajustes finales de la documentación
This commit is contained in:
parent
62153ca39a
commit
b728a74ee4
5 changed files with 93 additions and 98 deletions
|
|
@ -10,19 +10,6 @@ direction = "ltr"
|
|||
# Rótulo al inicio: "Off", "Slant", "Small", "Speed" o "Starwars".
|
||||
startup_banner = "Slant"
|
||||
|
||||
[log]
|
||||
# Traza de ejecución: "Error", "Warn", "Info", "Debug" o "Trace".
|
||||
# Ejemplos: "Error,actix_server::builder=Info,tracing_actix_web=Debug".
|
||||
tracing = "Info"
|
||||
# En terminal ("Stdout") o archivos "Daily", "Hourly", "Minutely" o "Endless".
|
||||
rolling = "Stdout"
|
||||
# Directorio para los archivos de traza (si rolling != "Stdout").
|
||||
path = "log"
|
||||
# Prefijo para los archivos de traza (si rolling != "Stdout").
|
||||
prefix = "tracing.log"
|
||||
# Presentación de las trazas: "Full", "Compact", "Pretty" o "Json".
|
||||
format = "Full"
|
||||
|
||||
[database]
|
||||
# Conecta con una base de datos (opcional).
|
||||
# Tipo de base de datos (mysql, postgres ó sqlite).
|
||||
|
|
@ -39,11 +26,6 @@ db_port = 0
|
|||
# Número máximo de conexiones habilitadas.
|
||||
max_pool_size = 5
|
||||
|
||||
[webserver]
|
||||
# Configuración del servidor web.
|
||||
bind_address = "localhost"
|
||||
bind_port = 8088
|
||||
|
||||
[dev]
|
||||
# Los archivos estáticos requeridos por temas y componentes incluidos en PageTop
|
||||
# se integran de manera predeterminada en el binario ejecutable. Sin embargo, es
|
||||
|
|
@ -51,3 +33,21 @@ bind_port = 8088
|
|||
# que no requiere compilar cada vez que se modifican. En este caso, normalmente,
|
||||
# basta con indicar el directorio "pagetop/static".
|
||||
static_files = ""
|
||||
|
||||
[log]
|
||||
# Traza de ejecución: "Error", "Warn", "Info", "Debug" o "Trace".
|
||||
# Ejemplos: "Error,actix_server::builder=Info,tracing_actix_web=Debug".
|
||||
tracing = "Info"
|
||||
# En terminal ("Stdout") o archivos "Daily", "Hourly", "Minutely" o "Endless".
|
||||
rolling = "Stdout"
|
||||
# Directorio para los archivos de traza (si rolling != "Stdout").
|
||||
path = "log"
|
||||
# Prefijo para los archivos de traza (si rolling != "Stdout").
|
||||
prefix = "tracing.log"
|
||||
# Presentación de las trazas: "Full", "Compact", "Pretty" o "Json".
|
||||
format = "Full"
|
||||
|
||||
[server]
|
||||
# Configuración del servidor web.
|
||||
bind_address = "localhost"
|
||||
bind_port = 8088
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ pub use actix_web::{
|
|||
pub use actix_web_files::Files as ActixFiles;
|
||||
pub use actix_web_static_files::ResourceFiles;
|
||||
|
||||
mod config;
|
||||
pub mod config;
|
||||
pub use config::SETTINGS;
|
||||
|
||||
mod banner;
|
||||
|
|
|
|||
|
|
@ -53,10 +53,7 @@ impl Application {
|
|||
.configure(&theme::all::configure_services)
|
||||
.default_service(super::web::route().to(service_not_found))
|
||||
})
|
||||
.bind(format!(
|
||||
"{}:{}",
|
||||
&SETTINGS.webserver.bind_address, &SETTINGS.webserver.bind_port
|
||||
))?
|
||||
.bind(format!("{}:{}", &SETTINGS.server.bind_address, &SETTINGS.server.bind_port))?
|
||||
.run();
|
||||
|
||||
Ok(Self { server })
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
//! Ajustes globales de la configuración.
|
||||
|
||||
use crate::config;
|
||||
use crate::predefined_settings;
|
||||
use crate::LazyStatic;
|
||||
|
|
@ -5,14 +7,14 @@ use crate::LazyStatic;
|
|||
use serde::Deserialize;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Ajustes globales para las secciones [`[app]`](App), [`[log]`](Log), [`[database]`](Database),
|
||||
/// [`[webserver]`](Webserver) y [`[dev]`](Dev) reservadas para PageTop ([`SETTINGS`]).
|
||||
/// Ajustes globales para las secciones reservadas [`[app]`](App), [`[database]`](Database),
|
||||
/// [`[dev]`](Dev), [`[log]`](Log) y [`[server]`](Server) (ver [`SETTINGS`]).
|
||||
pub struct Settings {
|
||||
pub app: App,
|
||||
pub log: Log,
|
||||
pub database: Database,
|
||||
pub webserver: Webserver,
|
||||
pub dev: Dev,
|
||||
pub log: Log,
|
||||
pub server: Server,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
|
|
@ -36,23 +38,6 @@ pub struct App {
|
|||
pub run_mode: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Sección `[log]` de los ajustes globales.
|
||||
///
|
||||
/// Ver [`Settings`].
|
||||
pub struct Log {
|
||||
/// Valor predefinido: *"Info"*
|
||||
pub tracing: String,
|
||||
/// Valor predefinido: *"Stdout"*
|
||||
pub rolling: String,
|
||||
/// Valor predefinido: *"log"*
|
||||
pub path: String,
|
||||
/// Valor predefinido: *"tracing.log"*
|
||||
pub prefix: String,
|
||||
/// Valor predefinido: *"Full"*
|
||||
pub format: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Sección `[database]` de los ajustes globales.
|
||||
///
|
||||
|
|
@ -74,17 +59,6 @@ pub struct Database {
|
|||
pub max_pool_size: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Sección `[webserver]` de los ajustes globales.
|
||||
///
|
||||
/// Ver [`Settings`].
|
||||
pub struct Webserver {
|
||||
/// Valor predefinido: *"localhost"*
|
||||
pub bind_address: String,
|
||||
/// Valor predefinido: *"8088"*
|
||||
pub bind_port: u16,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Sección `[dev]` de los ajustes globales.
|
||||
///
|
||||
|
|
@ -94,9 +68,45 @@ pub struct Dev {
|
|||
pub static_files: String,
|
||||
}
|
||||
|
||||
/// Declara los ajustes globales para la estructura [`Settings`].
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Sección `[log]` de los ajustes globales.
|
||||
///
|
||||
/// Ver [`Cómo usar los ajustes globales de la configuración`](index.html#cómo-usar-los-ajustes-globales-de-la-configuración).
|
||||
/// Ver [`Settings`].
|
||||
pub struct Log {
|
||||
/// Valor predefinido: *"Info"*
|
||||
pub tracing: String,
|
||||
/// Valor predefinido: *"Stdout"*
|
||||
pub rolling: String,
|
||||
/// Valor predefinido: *"log"*
|
||||
pub path: String,
|
||||
/// Valor predefinido: *"tracing.log"*
|
||||
pub prefix: String,
|
||||
/// Valor predefinido: *"Full"*
|
||||
pub format: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
/// Sección `[server]` de los ajustes globales.
|
||||
///
|
||||
/// Ver [`Settings`].
|
||||
pub struct Server {
|
||||
/// Valor predefinido: *"localhost"*
|
||||
pub bind_address: String,
|
||||
/// Valor predefinido: *"8088"*
|
||||
pub bind_port: u16,
|
||||
}
|
||||
|
||||
/// Declara e inicializa los ajustes globales para la estructura [`Settings`].
|
||||
///
|
||||
/// ```
|
||||
/// use pagetop::prelude::*;
|
||||
///
|
||||
/// fn demo() {
|
||||
/// println!("App name: {}", &SETTINGS.app.name);
|
||||
/// println!("App description: {}", &SETTINGS.app.description);
|
||||
/// println!("Value of PAGETOP_RUN_MODE: {}", &SETTINGS.app.run_mode);
|
||||
/// }
|
||||
/// ```
|
||||
pub static SETTINGS: LazyStatic<Settings> = LazyStatic::new(|| {
|
||||
config::try_into::<Settings>(predefined_settings!(
|
||||
// [app]
|
||||
|
|
@ -107,13 +117,6 @@ pub static SETTINGS: LazyStatic<Settings> = LazyStatic::new(|| {
|
|||
"app.direction" => "ltr",
|
||||
"app.startup_banner" => "Slant",
|
||||
|
||||
// [log]
|
||||
"log.tracing" => "Info",
|
||||
"log.rolling" => "Stdout",
|
||||
"log.path" => "log",
|
||||
"log.prefix" => "tracing.log",
|
||||
"log.format" => "Full",
|
||||
|
||||
// [database]
|
||||
"database.db_type" => "",
|
||||
"database.db_name" => "",
|
||||
|
|
@ -123,11 +126,18 @@ pub static SETTINGS: LazyStatic<Settings> = LazyStatic::new(|| {
|
|||
"database.db_port" => "0",
|
||||
"database.max_pool_size" => "5",
|
||||
|
||||
// [webserver]
|
||||
"webserver.bind_address" => "localhost",
|
||||
"webserver.bind_port" => "8088",
|
||||
|
||||
// [dev]
|
||||
"dev.static_files" => ""
|
||||
"dev.static_files" => "",
|
||||
|
||||
// [log]
|
||||
"log.tracing" => "Info",
|
||||
"log.rolling" => "Stdout",
|
||||
"log.path" => "log",
|
||||
"log.prefix" => "tracing.log",
|
||||
"log.format" => "Full",
|
||||
|
||||
// [server]
|
||||
"server.bind_address" => "localhost",
|
||||
"server.bind_port" => "8088"
|
||||
))
|
||||
});
|
||||
|
|
|
|||
|
|
@ -39,25 +39,6 @@
|
|||
//! 3. **config/local.toml**, para añadir o sobrescribir ajustes de los archivos anteriores.
|
||||
//!
|
||||
//!
|
||||
//! # Cómo usar los ajustes globales de la configuración
|
||||
//!
|
||||
//! PageTop incluye un conjunto de ajustes propios ([`Settings`]) accesibles vía [`SETTINGS`] para
|
||||
//! las secciones reservadas [`[app]`](App), [`[log]`](Log), [`[database]`](Database),
|
||||
//! [`[webserver]`](Webserver) y [`[dev]`](Dev) de la configuración:
|
||||
//!
|
||||
//! ```
|
||||
//! use pagetop::prelude::*;
|
||||
//!
|
||||
//! fn demo() {
|
||||
//! println!("App name: {}", &SETTINGS.app.name);
|
||||
//! println!("App description: {}", &SETTINGS.app.description);
|
||||
//! println!("Value of PAGETOP_RUN_MODE: {}", &SETTINGS.app.run_mode);
|
||||
//! }
|
||||
//! ```
|
||||
//!
|
||||
//! Los ajustes de configuración siempre son de sólo lectura.
|
||||
//!
|
||||
//!
|
||||
//! # 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
|
||||
|
|
@ -68,9 +49,9 @@
|
|||
//! serde = { version = "1.0", features = ["derive"] }
|
||||
//! ```
|
||||
//!
|
||||
//! Incluye en tu código una asignación similar a la que usa [`SETTINGS`] para declarar
|
||||
//! ([`LazyStatic`]) e inicializar tus nuevos ajustes ([`try_into()`]) con tipos seguros y
|
||||
//! valores predefinidos ([`predefined_settings!`](crate::predefined_settings)):
|
||||
//! Declara ([`LazyStatic`]) e inicializa tus nuevos ajustes con tipos seguros
|
||||
//! ([`config::try_into<S>()`](try_into)) y valores predefinidos
|
||||
//! ([`predefined_settings!`](crate::predefined_settings)):
|
||||
//!
|
||||
//! ```
|
||||
//! use pagetop::prelude::*;
|
||||
|
|
@ -99,14 +80,20 @@
|
|||
//! });
|
||||
//! ```
|
||||
//!
|
||||
//! Y usa la sintaxis TOML para añadir tu nueva sección `[myapp]` en los archivos de configuración,
|
||||
//! del mismo modo que `[app]` o `[webserver]` hacen para los ajustes globales ([`Settings`]).
|
||||
//! De hecho, así 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
|
||||
//! ([`Settings`](crate::app::config::Settings)).
|
||||
//!
|
||||
//! 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.
|
||||
//!
|
||||
//! Los ajustes de configuración siempre son de sólo lectura.
|
||||
//!
|
||||
//! # Cómo usar los nuevos ajustes de configuración
|
||||
//!
|
||||
//! # Cómo usar tus nuevos ajustes de configuración
|
||||
//!
|
||||
//! ```
|
||||
//! fn demo() {
|
||||
|
|
@ -185,13 +172,14 @@ static CONFIG_DATA: LazyStatic<ConfigData> = LazyStatic::new(|| {
|
|||
settings
|
||||
});
|
||||
|
||||
/// Carga ajustes con tipos seguros y valores predefinidos para tu aplicación o módulo en una
|
||||
/// estructura similiar a [`SETTINGS`].
|
||||
/// Carga ajustes con tipos seguros y valores predefinidos para tu aplicación o módulo.
|
||||
///
|
||||
/// Detiene la aplicación con un panic! si no pueden asignarse los ajustes de configuración.
|
||||
///
|
||||
/// Ver [`Cómo añadir ajustes de configuración`](index.html#cómo-añadir-ajustes-de-configuración).
|
||||
pub fn try_into<T>(values: PredefinedSettings) -> T
|
||||
pub fn try_into<S>(values: PredefinedSettings) -> S
|
||||
where
|
||||
T: Deserialize<'static>,
|
||||
S: Deserialize<'static>,
|
||||
{
|
||||
let mut settings = CONFIG_DATA.clone();
|
||||
for (key, value) in values.iter() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue