#web框架 #web应用 #Web #Ruby #Rails #框架 #Rust

bin+lib rustyroad

锈路路是一个基于Ruby on Rails的,用Rust编写的框架。它旨在提供Ruby on Rails熟悉的约定和易用性,同时利用Rust的性能和效率。

33个版本 (15个稳定版)

1.0.14 2024年6月13日
1.0.13 2024年3月14日
1.0.11 2024年2月29日
1.0.2 2023年12月25日
0.1.3 2023年3月11日

#39 in HTTP客户端

Download history 7/week @ 2024-04-27 6/week @ 2024-05-04 5/week @ 2024-05-18 4/week @ 2024-05-25 1/week @ 2024-06-01 113/week @ 2024-06-08 35/week @ 2024-06-15 5/week @ 2024-06-22 8/week @ 2024-07-06 132/week @ 2024-07-27 1/week @ 2024-08-03

每月133次下载

MIT许可证

1.5MB
12K SLoC

Project logo

锈路路

Hackathon Status GitHub Issues GitHub Pull Requests License


纪念锈路,锈路是我的狗,于2023年9月去世。他是一只可爱的小狗。我永远感激和他在一起的时光。他是我的好朋友,我将非常想念他。我爱你,锈路。2014 - 2023

注意:锈路路仍在开发中。请使用候选版本或cargo crate。请勿在生产环境中使用master。它仍在进行大量开发,尚未准备好用于生产。

锈路路是一个强大而可靠的Rust编程语言的Web框架,灵感来源于Ruby on Rails。结合Rails熟悉的约定和易用性以及Rust的性能和效率,锈路路让开发者有信心构建前沿的Web应用程序。
“锈路路”这个名字不仅反映了框架所基于的语言,还反映了开发者构建应用程序时的旅程。

锈路路源于对Rust的热爱和对让所有技能水平的开发者更容易使用它的渴望,旨在弥合Rust的低级控制和高级Web框架功能之间的差距。凭借其闪电般的性能和强大功能,锈路路能够应对现代Web开发的挑战。

随着锈路路的不断进化,它将在Rust和Web开发领域开创新天地,使开发者能够创建越来越先进和复杂的Web应用程序。通过为Web开发提供坚实的基础,锈路路将赋予开发者实现最高目标的能力,并通过软件的力量让世界变得更美好。

如果你厌倦了慢速和不稳定的Web框架,并且你准备好使用Rust将你的Web开发提升到下一个水平,那么Rusty Road就是你的答案。体验Ruby on Rails的易用性与Rust的性能和效率的完美融合,并充分发挥Web开发的潜力。
不要再让你的Web开发停滞不前。使用Rusty Road,你可以构建快速、可靠的应用程序,让你的用户感到愉悦,并在竞争中脱颖而出。拥抱Rusty Road的力量,提升你的Web开发吧!

🆕 Rusty Road 0.1.8 新功能

  • Rusty Road 现已包括GrapeJS,一个拖放式网站构建器。你可以通过运行以下命令将其添加到项目中:rustyroad feature add grapesjs
    1. 有关GrapeJS的更多信息,请参阅此处
    2. 示例项目在此:此处
  • PostgreSQL的稳定版本支持。
  • MySQL的Beta版本支持。
  • SQLite的Beta版本支持。

📝 目录

🧐 问题陈述

Rust需要Rails

我在这里的一篇博客文章中概述了这一点:[Rust需要Rails](https://rileyseaburg.com/posts/rust-needs-a-rails)

  • IDEAL:在理想的世界里,Rust将有一个与Ruby on Rails一样易用的框架。它将易于学习、使用和维护。它将快速、安全、可靠。它将是可扩展和可定制的。它将使用起来令人愉悦。
  • REALITY:Rust是一种强大的语言,但不易使用。它不易学习,也不易维护。尽管它安全,但构建速度较慢,没有与Ruby on Rails一样易用的框架。([Rust仍然是受喜爱的编程语言](https://survey.stackoverflow.co/2023/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages))。

💡想法/解决方案

锈路路是一个基于Ruby on Rails的,用Rust编写的框架。它旨在提供Ruby on Rails熟悉的约定和易用性,同时利用Rust的性能和效率。

🐶 Rusty Road是什么

锈路路是一个基于Ruby on Rails的,用Rust编写的框架。它旨在提供Ruby on Rails熟悉的约定和易用性,同时利用Rust的性能和效率。

Rusty Road旨在为开发人员提供一个使用Rust构建Web应用程序的强大且可靠的平台,其名称以一种俏皮且易于记忆的方式结合了锈色主题的蟹。

理解Rusty Road

Rusty Road目前与actix web框架、Sqlx、Tera模板引擎、MySQL、PostgreSQL和SQLite兼容。它还有一个可选特性,允许你将支持tailwind css的GrapeJs编辑器添加到项目中。

🎈当前功能

  • 数据库迁移
  • 支持PostgreSQL
  • 支持MySQL
  • 支持SQLite
  • 路由(actix)
  • 模板(Tera)
  • CSS框架(Tailwind CSS)
  • 可选支持带有tailwind css支持的GrapeJs编辑器

🚀未来范围

  • 添加GraphQL支持。
  • 添加基于API的微服务支持。
  • 添加更多资产管道支持。
  • 添加Kubernetes支持。
  • 添加更多认证框架支持。

🏁开始使用

这些说明将帮助您在本地机器上获取项目的副本,以便进行开发和测试。有关如何在实时系统上部署项目的说明,请参阅部署部分。

理解构建过程

在深入设置和解决已知问题之前,了解这个项目中构建过程的工作原理以及为什么某些步骤是必要的至关重要。

为什么使用build.rs

Rust中的build.rs文件是一个构建脚本,它在Rust编译器之前执行,以执行各种任务,例如编译链接的C库、生成代码等。

在这个项目中,build.rs执行关键任务

  1. PostgreSQL链接:它处理与PostgreSQL库的链接。如果构建脚本找不到所需的PostgreSQL库,将导致构建失败,因此需要正确设置环境变量,如解决PostgreSQL链接问题部分中所述。

  2. Node.js集成:确保使用正确的Node.js版本,并运行项目中的Node.js部分的构建,该部分位于grapesjs-tailwind目录中。这对于将JavaScript框架GrapesJS集成到Rust项目中至关重要。

  3. JavaScript文件包含:为了包含GrapesJS所需的JavaScript文件(grapesjs-tailwind.min.js),构建脚本在编译时间将此文件复制到已知位置。然后,Rust代码使用来自此已知位置的include_bytes!包含文件内容。这种方法是健壮的、可移植的,并且不依赖于文件的绝对路径。

🛠️ 设置和安装

1. 安装先决条件

在开始之前,请确保您的机器上已安装Rust。如果没有,您可以使用rustup进行安装。此外,请遵循为Windows安装Node版本管理器(nvm)部分的说明来设置Node.js。

2. 解决已知问题

3. 克隆和构建项目

  • 将项目克隆到您的本地机器上。
  • 导航到项目目录,并运行cargo build来构建项目。

4. 验证构建

  • 确保构建过程中没有错误。
  • 如果出现任何问题,请参阅已知问题部分,并确保所有先决条件都已正确安装和配置。

🚀 运行项目

一旦解决已知问题并理解构建过程,您就可以在本地运行项目进行开发和测试。使用cargo run命令启动项目,并按照屏幕上的说明或参考项目文档来使用和测试实现的功能。

⚠️ 注意

理解构建过程和解决已知问题是设置项目的关键步骤。虽然这可能看起来有些繁琐,但它们确保项目在不同环境和配置下无缝运行,为开发和部署奠定坚实的基础。

已知问题

有一些已知问题,但它们很容易解决。

解决 PostgreSQL 连接问题

如果您遇到以下错误:LINK : 致命错误 LNK1181: 无法打开输入文件 'libpq.lib',这意味着项目无法找到 libpq 库。按照以下步骤解决问题:

  1. 如果您还没有,请从官方网站下载并安装 Windows 的 PostgreSQL 二进制文件。

  2. 请确保将其安装在易于访问的位置,例如 C:\\Program Files\\PostgreSQL\\13\\

  3. 设置环境变量 POSTGRES_LIB_PATH,指向包含 libpq.lib 的 PostgreSQL 库目录

    • Windows 键 -> 输入 '环境变量 ' -> 点击 '编辑 系统环境变量 ' -> 点击 '环境变量 ... ' 按钮 ->'系统 变量 ' 部分, 点击 '新建 ... ' 按钮 ->'变量名 ', 输入 'POSTGRES_LIB_PATH'.'变量值 ', 输入包含 libpq.lib` 的目录路径。确认并应用更改。请记住,您可能需要打开一个新的命令提示符或 PowerShell 窗口才能使更改生效。
  4. 使用 rustyRoad 生成网站后,如果您在使用 Windows。

    • 在 rustyroad 项目的根目录中的 .cargo 目录内创建或编辑 config.toml 文件(如果不存在,则创建 .cargo 目录)。添加以下行,将 C:\\Program Files\\PostgreSQL\\13\\lib 替换为您实际的 libpq.lib 所在路径。请记住,为了跨平台兼容性,使用双反斜杠 \\
    [target.'cfg(windows)']
    rustflags = ["-C", "link-arg=/LIBPATH:C:\\Program Files\\PostgreSQL\\13\\lib"]
    

注意:将 C:\\Program Files\\PostgreSQL\\13\\lib 替换为您 PostgreSQL 安装的精确路径。

注意:Rust 构建脚本使用此 POSTGRES_LIB_PATH 环境变量。

解决 Windows 上生成的项目连接问题

  1. 导航到您 rustyroad 项目的根目录(您的 Cargo.toml 文件所在的目录)。
    cd to/your/project/directory
    
  2. 在此目录内,找到 .cargo 目录,如果不存在,则创建它。
mkdir .cargo    # if .cargo directory doesn't exist
  1. .cargo 目录内,创建或编辑 config.toml 文件。
cd .cargo
touch config.toml  # if config.toml doesn't exist
  1. 使用您首选的文本编辑器打开 config.toml 文件。将以下行添加到 config.toml 文件中,将 C:\\ProgramData\\PostgreSQL\\16rc1\\lib 替换为您的 libpq.lib 文件实际路径(使用双反斜杠)。
[target.'cfg(windows)']
rustflags = ["-C", "link-arg=/LIBPATH:C:\\ProgramData\\PostgreSQL\\16rc1\\lib"]
  1. 保存并关闭文件。
  2. 现在,当您再次使用 cargo buildcargo run 构建您的项目时,构建应能正确找到 libpq.lib 文件。

为 Windows 安装 Node 版本管理器 (nvm)

Rusty Road 项目使用 Node.js,我们将使用 Node 版本管理器 (nvm) 来管理版本。要为 Windows 安装 nvm

  1. 访问 nvm for Windows 的最新发布页面,网址为 https://github.com/coreybutler/nvm-windows/releases
  2. 下载 nvm-setup.zip 文件。
  3. 解压 zip 文件并运行安装程序(nvm-setup.exe)。
  4. 按照安装程序的说明操作。
  5. 安装 nvm 后,关闭您的终端或命令提示符,然后打开一个新的终端以使更改生效。
  6. 在新的终端中输入 nvm version 以验证 nvm 是否正确安装。如果显示版本号,则表示 nvm 已成功安装。

先决条件

构建和运行 Rusty Road 需要 Rust。您可以使用 rustup 安装 Rust。rustup 是一种帮助管理 Rust 安装的工具,它允许轻松安装多个 Rust 版本并在它们之间切换。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装

Crates.io

Rusty Road 在 crates.io 上可用。您可以使用 cargo 安装它

cargo install rustyroad

加分步骤 #1(可选):将以下内容添加到您的 .bashrc 或 .zshrc 文件中,以便在终端中使用 rustyroad 命令

export PATH="$HOME/.cargo/bin:$PATH"

加分步骤 #2(可选):在您的 ~/.cargo/bin 目录中创建 rustyroad 命令的符号链接。这将创建从 rustyroad 到 ~/.cargo/bin/ 目录中的 rr 的符号链接。现在您可以通过 rr 命令调用 rustyroad,该命令只是一个指向 rustyroad 的符号链接。

sudo ln -s ~/.cargo/bin/rustyroad /usr/local/bin/rr

(Windows 用户可以从 发布页面 下载可执行文件并将其添加到他们的 PATH 中。)

从源代码安装

克隆仓库并运行设置脚本。

git clone --recurse-submodules https://github.com/RustyRoad/RustyRoad
cd RustyRoad
cargo run

🎈 使用

CLI 将提示您创建一个新的项目。输入您的项目名称,CLI 将在当前目录中创建一个新的项目。

$ rustyroad
CLI for Rusty Road

Usage: rustyroad.exe <COMMAND>

Commands:
  new         Creates a new project
  generate    Generates a new route, model, or controller
  migration   Runs migrations
  feature     Adds a new feature to your project
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

遵循命令流程创建新项目

rustyroad new my_project

生成新路由

rustyroad generate route users

注意:如果您想运行示例项目,请确保首先运行迁移。

cd example

rustyroad migration run

⛏️ 使用

✍️ 作者

还可以查看参与此项目的贡献者列表

🎉 致谢

  • Ruby on Rails 的创造者 David Heinemeier Hansson (DHH)
  • Rust 的创造者 Graydon Hoare

依赖关系

~77MB
~1.5M SLoC