文章摘要
Brut是一个全新的Ruby Web框架,旨在简洁而功能全面。与其他Ruby框架不同,Brut摒弃了控制器、动词和资源的概念,开发者只需构建页面、表单和单动作处理器,直接在服务器端生成HTML,同时支持自定义JavaScript和CSS。Brut强调低抽象和低仪式感,但不失框架特性,内置了基于OpenTelemetry的监控、Sequel驱动的数据访问层以及基于OptionParser的命令行工具,为开发者提供高效便捷的开发体验。
文章总结
文章主要内容总结
标题: Brut: 一个全新的 Ruby Web 框架
发布时间: 2025年7月8日
内容概述:
Brut 是一个全新的 Ruby Web 框架,旨在提供简单但功能齐全的开发体验。与其他 Ruby Web 框架不同,Brut 没有控制器、动词或资源的概念,开发者只需构建页面、表单和单动作处理器。Brut 的 HTML 在服务器端生成,开发者可以自由编写 JavaScript 和 CSS。

核心特点:
低抽象与低仪式感: Brut 不像 Sinatra 那样低级别,但它保持了低抽象和低仪式感的设计理念。Brut 应用内置了基于 OpenTelemetry 的监控、Sequel 驱动的数据访问层,以及基于
OptionParser的命令行工具。快速上手: Brut 可以通过 Docker 快速安装和运行应用,开发者无需手动安装 Ruby。
示例应用: 提供了一个完整的示例应用 ADRs.cloud,供开发者参考和学习。
主要功能:
- 类与对象设计: Brut 的核心设计围绕类的实例化,避免了过多的
include调用和动态方法定义。 - 现代 Web 平台支持: 统一了客户端和服务器端的表单验证,提供了 BrutJS 库来增强 HTML,并通过 esbuild 处理 CSS。
- 默认最佳实践: 应用默认具有合理的内容安全策略,数据库列默认不为空,外键默认存在且索引化。
- Ruby gems 支持: 使用 RSpec 进行测试,Faker 和 FactoryBot 生成测试数据,Phlex 生成 HTML。
- 配置简化: 使用 Ruby Hash 进行国际化配置,动态配置通过环境变量管理,避免了 YAML 的过度使用。
- 避免不必要的抽象: Brut 避免了不必要的抽象,开发者无需纠结于资源控制器或后端控制器的设计。
开发动机:
作者希望通过 Brut 简化 Web 应用的开发过程,避免无休止的架构决策和无意义的争论,专注于使用 Ruby 和 HTML 构建应用,享受开发乐趣。
下一步计划:
作者将继续致力于 Brut 1.0 版本的开发,并希望开发者也能享受使用 Brut 构建应用的过程。

总结: Brut 是一个旨在简化 Web 开发流程的 Ruby 框架,通过低抽象设计和现代 Web 平台支持,帮助开发者快速构建功能齐全的应用,同时避免不必要的复杂性和争论。
评论总结
对框架的期待与试用
- freedomben 认为该框架可能介于Sinatra和Rails之间,适合简单应用,期待试用。
引用: "Neat, this looks like it might be a good middle ground between Sinatra... and Rails." - sarchertech 表示该框架适合个人项目或与少数资深同事合作的项目。
引用: "It sounds exactly what I’d want to use for a side project or a project with a limited number of reasonable, senior coworkers."
- freedomben 认为该框架可能介于Sinatra和Rails之间,适合简单应用,期待试用。
对框架的实际体验与问题
- heeton 在尝试登录示例网站时遇到错误。
引用: "Tried to login to the example site, unfortunately hit an error immediately after auth'ing with github."
- heeton 在尝试登录示例网站时遇到错误。
对Rails框架的反思
- caseyohara 认为Rails的约定和规则在大型项目中是必要的,尽管有样板代码,但有助于维护。
引用: "At a certain codebase size, boilerplate is almost unavoidable. Unpleasant, but necessary."
引用: "Good luck maintaining that spaghetti when you’ve got multiple developers."
- caseyohara 认为Rails的约定和规则在大型项目中是必要的,尽管有样板代码,但有助于维护。
对框架的许可证与伦理条款的关注
- cosmojg 对Brut的HIPPOCRATIC LICENSE表示兴趣,特别是其中关于平等薪酬和工作时间的条款。
引用: "Oh man, Brut's HIPPOCRATIC LICENSE is interesting!"
引用: "Provide equal pay for equal work... and Allow for reasonable limitation of working hours."
- cosmojg 对Brut的HIPPOCRATIC LICENSE表示兴趣,特别是其中关于平等薪酬和工作时间的条款。
对框架设计理念的认同
- rorylaitila 赞同框架对表单和页面的强调,认为控制器被过度使用,表单和模型可以更优雅地处理交互。
引用: "I like the emphasis on forms and pages. That’s the approach I take in my apps."
引用: "A lot of the validation and ceremony of controllers can be handled more elegantly by the framework."
- rorylaitila 赞同框架对表单和页面的强调,认为控制器被过度使用,表单和模型可以更优雅地处理交互。
对框架命名与路由的质疑
- gavmor 对框架的命名和路由设计提出疑问,但整体表示认可,可能因此重新使用Ruby。
引用: "Hm, uh, seems like now we will be forever asking ourselves this question about /widgets."
引用: "That being said, it looks good! Might get me back into ruby."
- gavmor 对框架的命名和路由设计提出疑问,但整体表示认可,可能因此重新使用Ruby。
对框架技术基础的探讨
- hamzakc 询问是否考虑过基于Roda开发。
引用: "Just wondering if you have considered looking into Roda?" - raggi 认为该框架让他联想到Camping,但没有动态父类构造函数。
引用: "This reminds me of Camping without the dynamic parent class constructor."
- hamzakc 询问是否考虑过基于Roda开发。