Loco 配置指南
loco
的配置位于 config/
中,默认情况下设置 3 种不同的环境:
config/
development.yaml
production.yaml
test.yaml
环境的选择依据如下:
- 命令行标志:
cargo loco start --environment production
,如果没有给出,则回退到 LOCO_ENV
或RAILS_ENV
或NODE_ENV
如果没有给出,则默认值为 development
。
Loco
框架除了默认环境之外,还支持自定义环境。要添加自定义环境,请创建一个配置文件,其名称与前面示例中使用的环境标识符匹配。
配置中的占位符/变量
可以将值注入到配置文件中。在此示例中,我们从 NODE_PORT
环境变量获取端口值:
# config/development.yaml
# 每个配置文件都是有效的 Tera 模板
server:
# 服务器将侦听的端口。服务器绑定为 0.0.0.0:{PORT}
port: {{ get_env(name="NODE_PORT", default=3000) }}
# 邮件发送者将指向的 UI 主机名或 IP 地址。
host: http://localhost
# 开箱即用的中间件配置。要禁用中间件,您可以将 `enable` 字段更改为 `false` 或注释掉中间件块
get_env 函数是 Tera 模板引擎的一部分。请参阅 Tera 文档以了解您可以使用什么更多内容。
示例
假设您想添加一个“qa”环境。在 config 文件夹中创建一个 qa.yaml
文件:
config/
development.yaml
production.yaml
test.yaml
qa.yaml
要使用“qa”环境运行应用程序,请执行以下命令:
$ LOCO_ENV=qa cargo loco start
设置
配置文件包含用于设置 Loco 应用程序。您还可以拥有自定义设置,具体请见 settings:
块。
# 在 config/development.yaml 中
添加 `settings:` 块
settings:
allow_list:
- google.com
- apple.com
logger:
# ...
这些设置将以 serde_json::Value
的形式显示在 ctx.config.settings
中。您可以通过添加结构来创建强类型设置:
// 将此内容放入 src/common/settings.rs 中
#[derive(Serialize, Deserialize, Default, Debug)]
pub struct Settings {
pub allow_list: Option<Vec<String>>,
}
impl Settings {
pub fn from_json(value: &serde_json::Value) -> Result<Self> {
Ok(serde_json::from_value(value.clone())?)
}
}
然后,您可以像这样从任何地方访问设置:
// 在控制器、工作程序、任务或其他地方,
// 只要您可以访问 AppContext(此处:`ctx`)
if let Some(settings) = &ctx.config.settings {
let settings = common::settings::Settings::from_json(settings)?;
println!("允许列表:{:?}", settings.allow_list);
}
日志系统
除了 YAML 文件中 logger:
小节中带注释的字段之外,这里还有一些信息:
logger.pretty_backtrace
- 将显示没有噪声的彩色回溯,以便获得很好的开发体验。请注意,这会强制将RUST_BACKTRACE=1
设置到进程的环境变量中,这会针对特定错误启用(成本高昂的)回溯捕获。在开发中启用此功能,在生产中禁用此功能。如果需要在生产中使用,请在命令行中临时使用RUST_BACKTRACE=1
来显示它。- Rust 的日志记录 - 如何上手? - 更多在 rust 中使用日志系统的指南
有关所有可用配置选项,请点击此处:点我跳转