ruwebframe 0.1.6

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation

ruwebframe

介绍

ruwebframe 是 akunlong 推出的基于 rust 的代码开发平台
该平台基于 ruwebframe 框架,提供了基于 Rust 的 Web 应用开发能力
该平台提供了基于 Rust 的 Web 应用开发能力,包括了基于 Rust 的 Web 应用开发能力
工业级世匠、开发者神器

软件架构

软件架构说明 ##开发工具: RustOver

参考 https://gitee.com/leijmdas/goweb3.git

工程:https://gitee.com/leijmdas/ruwebframe.git

安装教程

已经发布至rust仓库

  1. View v0.1.6 https://crates.io/crates/ruwebframe/0.1.6

ruwebframe has 4 core modules:

  1. rucmd - 命令行工具模块,提供命令行接口,支持 enc/dec(加密/解密)、cfg(配置查看)、rudi(依赖注入代码生成)等子命令
  2. rulog - 日志模块,基于 flexi_logger 实现,支持日志分级(info/error/debug)、文件轮转、控制台输出
  3. rudi - 依赖注入(DI)模块,类似 Java Spring IoC 容器,支持单例/多例注册、全局 Bean 获取、自动代码生成
  4. rucfg - 配置管理模块,基于 YAML 配置文件,支持多环境切换(dev/test/prod),使用 spicex 解析环境变量 根据对代码库的深入分析,以下是 ruwebframe 四大核心模块的功能清单:

ruwebframe 功能清单

ruwebframe 是一个基于 Rust(actix-web)的 Web 应用开发框架,定位为"工业级世匠、开发者神器",对标 Go 的 goweb3 框架。


1. rucmd — 命令行工具模块

rucmd.rs

提供统一的命令行入口,支持以下子命令:

子命令 功能 说明
enc 加密 调用 ruenc 模块对字符串进行加密
dec 解密 调用 ruenc 模块对字符串进行解密
cfg 查看配置 读取并打印当前 YAML 配置的 JSON 格式
rudi list 列出结构体 扫描 ./src 下所有 Rust 结构体
rudi all 批量生成 DI 为所有结构体自动生成 _init.rs 依赖注入代码
rudi <name> 单个生成 DI 为指定名称的结构体生成 _init.rs
help 帮助 打印帮助信息
version 版本 打印版本信息

核心设计:通过 ctor 机制在程序启动时自动注册为单例 Bean,存入全局 DI 容器。


2. rulog — 日志模块

rulog.rs

基于 flexi_logger 实现的企业级日志系统:

功能 说明
日志分级 支持 infoerrordebug 三个级别
双输出 同时输出到控制台(println!)和日志文件
文件轮转 单文件超过 50MB 自动轮转,保留最近 5 个归档
自定义格式 [2026-08-01 14:30:25.123] [INFO] module:line - message
日志路径 统一输出到 ./logs/app.log
便捷函数 info()error()debug()info2()error2()debug2()
LogInfo 辅助 支持链式拼接日志信息,通过 LogInfo 结构体合并多个日志段

通过 OnceLock 实现日志配置的全局懒加载,确保整个应用生命周期内只初始化一次。


3. rudi — 依赖注入(DI)模块

mod.rs

对标 Java Spring IoC 容器的 Rust 实现,是整个框架的核心基础设施:

子模块 功能 说明
dicontainer IoC 容器核心 Container 结构体,支持 Factory(多例)和 Singleton(单例)两种模式
direg 全局静态门面 基于 OnceLock<RwLock<Container>> 提供全局唯一容器,任意位置可通过 get_bean::<T>(key) 获取 Bean
difactroy DI 代码工厂 自动扫描 ./src 下所有 .rs 文件中的结构体,通过 AST 解析后自动生成 _init.rs 依赖注入代码
ditemplate 模板引擎 struct_init.template 模板文件与结构体信息结合,渲染生成初始化代码
ditrait 容器抽象层 BeanRegistry trait 定义容器行为规范,便于扩展和 mock
ruast AST 解析 基于 syn crate 解析 Rust 源码,提取结构体和 trait 信息
didto 数据传输对象 StructInfo 等 DTO,承载结构体元信息用于代码生成

设计亮点

  • 线程安全:Arc + Mutex + RwLock + OnceLock
  • 编译期自动注册:ctor + inventory 机制
  • 零配置启动:一行 #[ctor(unsafe)] 即可自动注册 Bean

4. rucfg — 配置管理模块

ruconfig.rs

基于 YAML 的多环境配置管理系统:

功能 说明
多环境切换 通过 env.yml 中的 Env 字段,自动加载 ichub-{env}.yml(如 ichub-dev.ymlichub-postgres.yml
环境变量解析 支持 ${VAR_NAME} 语法,运行时替换环境变量
YAML → JSON 提供 read2json() 方法将配置转为 JSON 字符串
环境判断 ifDev()ifTest()ifMaster() 等便捷函数
配置结构 包含 software(软件信息)、database(数据库)、redisweb(服务器配置)等完整 DTO
线程安全 使用 Arc<Mutex<CfgDto>> 保证并发读取安全
懒加载 首次访问时解析配置文件,之后直接返回缓存

配置解析链env.yml → Env 字段 → 拼接文件名 → 解析 YAML → 替换环境变量 → CfgDto


模块依赖关系

rucmd ──→ rucfg (读配置)
      ──→ rulog (打日志)
      ──→ rudi  (代码生成)
      ──→ ruenc (加解密)

rudi  ──→ rulog (打日志)
      ──→ rucfg (读配置模板)

所有模块 ──→ rudi/direg (全局 DI 容器,统一管理 Bean)

四个模块协同工作,共同构成了 ruwebframe 的核心基础设施层。

使用说明

  1. xxxx
  2. xxxx
  3. xxxx

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request