📝 [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".
|
# Rótulo al inicio: "Off", "Slant", "Small", "Speed" o "Starwars".
|
||||||
startup_banner = "Slant"
|
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]
|
[database]
|
||||||
# Conecta con una base de datos (opcional).
|
# Conecta con una base de datos (opcional).
|
||||||
# Tipo de base de datos (mysql, postgres ó sqlite).
|
# Tipo de base de datos (mysql, postgres ó sqlite).
|
||||||
|
|
@ -39,11 +26,6 @@ db_port = 0
|
||||||
# Número máximo de conexiones habilitadas.
|
# Número máximo de conexiones habilitadas.
|
||||||
max_pool_size = 5
|
max_pool_size = 5
|
||||||
|
|
||||||
[webserver]
|
|
||||||
# Configuración del servidor web.
|
|
||||||
bind_address = "localhost"
|
|
||||||
bind_port = 8088
|
|
||||||
|
|
||||||
[dev]
|
[dev]
|
||||||
# Los archivos estáticos requeridos por temas y componentes incluidos en PageTop
|
# Los archivos estáticos requeridos por temas y componentes incluidos en PageTop
|
||||||
# se integran de manera predeterminada en el binario ejecutable. Sin embargo, es
|
# 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,
|
# que no requiere compilar cada vez que se modifican. En este caso, normalmente,
|
||||||
# basta con indicar el directorio "pagetop/static".
|
# basta con indicar el directorio "pagetop/static".
|
||||||
static_files = ""
|
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_files::Files as ActixFiles;
|
||||||
pub use actix_web_static_files::ResourceFiles;
|
pub use actix_web_static_files::ResourceFiles;
|
||||||
|
|
||||||
mod config;
|
pub mod config;
|
||||||
pub use config::SETTINGS;
|
pub use config::SETTINGS;
|
||||||
|
|
||||||
mod banner;
|
mod banner;
|
||||||
|
|
|
||||||
|
|
@ -53,10 +53,7 @@ impl Application {
|
||||||
.configure(&theme::all::configure_services)
|
.configure(&theme::all::configure_services)
|
||||||
.default_service(super::web::route().to(service_not_found))
|
.default_service(super::web::route().to(service_not_found))
|
||||||
})
|
})
|
||||||
.bind(format!(
|
.bind(format!("{}:{}", &SETTINGS.server.bind_address, &SETTINGS.server.bind_port))?
|
||||||
"{}:{}",
|
|
||||||
&SETTINGS.webserver.bind_address, &SETTINGS.webserver.bind_port
|
|
||||||
))?
|
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
Ok(Self { server })
|
Ok(Self { server })
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
//! Ajustes globales de la configuración.
|
||||||
|
|
||||||
use crate::config;
|
use crate::config;
|
||||||
use crate::predefined_settings;
|
use crate::predefined_settings;
|
||||||
use crate::LazyStatic;
|
use crate::LazyStatic;
|
||||||
|
|
@ -5,14 +7,14 @@ use crate::LazyStatic;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Ajustes globales para las secciones [`[app]`](App), [`[log]`](Log), [`[database]`](Database),
|
/// Ajustes globales para las secciones reservadas [`[app]`](App), [`[database]`](Database),
|
||||||
/// [`[webserver]`](Webserver) y [`[dev]`](Dev) reservadas para PageTop ([`SETTINGS`]).
|
/// [`[dev]`](Dev), [`[log]`](Log) y [`[server]`](Server) (ver [`SETTINGS`]).
|
||||||
pub struct Settings {
|
pub struct Settings {
|
||||||
pub app: App,
|
pub app: App,
|
||||||
pub log: Log,
|
|
||||||
pub database: Database,
|
pub database: Database,
|
||||||
pub webserver: Webserver,
|
|
||||||
pub dev: Dev,
|
pub dev: Dev,
|
||||||
|
pub log: Log,
|
||||||
|
pub server: Server,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
@ -36,23 +38,6 @@ pub struct App {
|
||||||
pub run_mode: String,
|
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)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[database]` de los ajustes globales.
|
/// Sección `[database]` de los ajustes globales.
|
||||||
///
|
///
|
||||||
|
|
@ -74,17 +59,6 @@ pub struct Database {
|
||||||
pub max_pool_size: u32,
|
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)]
|
#[derive(Debug, Deserialize)]
|
||||||
/// Sección `[dev]` de los ajustes globales.
|
/// Sección `[dev]` de los ajustes globales.
|
||||||
///
|
///
|
||||||
|
|
@ -94,9 +68,45 @@ pub struct Dev {
|
||||||
pub static_files: String,
|
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(|| {
|
pub static SETTINGS: LazyStatic<Settings> = LazyStatic::new(|| {
|
||||||
config::try_into::<Settings>(predefined_settings!(
|
config::try_into::<Settings>(predefined_settings!(
|
||||||
// [app]
|
// [app]
|
||||||
|
|
@ -107,13 +117,6 @@ pub static SETTINGS: LazyStatic<Settings> = LazyStatic::new(|| {
|
||||||
"app.direction" => "ltr",
|
"app.direction" => "ltr",
|
||||||
"app.startup_banner" => "Slant",
|
"app.startup_banner" => "Slant",
|
||||||
|
|
||||||
// [log]
|
|
||||||
"log.tracing" => "Info",
|
|
||||||
"log.rolling" => "Stdout",
|
|
||||||
"log.path" => "log",
|
|
||||||
"log.prefix" => "tracing.log",
|
|
||||||
"log.format" => "Full",
|
|
||||||
|
|
||||||
// [database]
|
// [database]
|
||||||
"database.db_type" => "",
|
"database.db_type" => "",
|
||||||
"database.db_name" => "",
|
"database.db_name" => "",
|
||||||
|
|
@ -123,11 +126,18 @@ pub static SETTINGS: LazyStatic<Settings> = LazyStatic::new(|| {
|
||||||
"database.db_port" => "0",
|
"database.db_port" => "0",
|
||||||
"database.max_pool_size" => "5",
|
"database.max_pool_size" => "5",
|
||||||
|
|
||||||
// [webserver]
|
|
||||||
"webserver.bind_address" => "localhost",
|
|
||||||
"webserver.bind_port" => "8088",
|
|
||||||
|
|
||||||
// [dev]
|
// [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.
|
//! 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
|
//! # 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
|
||||||
|
|
@ -68,9 +49,9 @@
|
||||||
//! serde = { version = "1.0", features = ["derive"] }
|
//! serde = { version = "1.0", features = ["derive"] }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! Incluye en tu código una asignación similar a la que usa [`SETTINGS`] para declarar
|
//! Declara ([`LazyStatic`]) e inicializa tus nuevos ajustes con tipos seguros
|
||||||
//! ([`LazyStatic`]) e inicializar tus nuevos ajustes ([`try_into()`]) con tipos seguros y
|
//! ([`config::try_into<S>()`](try_into)) y valores predefinidos
|
||||||
//! valores predefinidos ([`predefined_settings!`](crate::predefined_settings)):
|
//! ([`predefined_settings!`](crate::predefined_settings)):
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! use pagetop::prelude::*;
|
//! 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,
|
//! De hecho, así se declaran e inicializan los ajustes globales de la configuración
|
||||||
//! del mismo modo que `[app]` o `[webserver]` hacen para los ajustes globales ([`Settings`]).
|
//! ([`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
|
//! 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.
|
||||||
//!
|
//!
|
||||||
|
//! 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() {
|
//! fn demo() {
|
||||||
|
|
@ -185,13 +172,14 @@ static CONFIG_DATA: LazyStatic<ConfigData> = LazyStatic::new(|| {
|
||||||
settings
|
settings
|
||||||
});
|
});
|
||||||
|
|
||||||
/// Carga ajustes con tipos seguros y valores predefinidos para tu aplicación o módulo en una
|
/// Carga ajustes con tipos seguros y valores predefinidos para tu aplicación o módulo.
|
||||||
/// estructura similiar a [`SETTINGS`].
|
///
|
||||||
|
/// 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).
|
/// 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
|
where
|
||||||
T: Deserialize<'static>,
|
S: Deserialize<'static>,
|
||||||
{
|
{
|
||||||
let mut settings = CONFIG_DATA.clone();
|
let mut settings = CONFIG_DATA.clone();
|
||||||
for (key, value) in values.iter() {
|
for (key, value) in values.iter() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue