Brut:一个新的Ruby网络框架

Brut:一个新的Ruby网络框架

Hacker News 摘要

原标题:Brut: A New Web Framework for Ruby

Brut是一个新的Ruby网络框架,旨在提供一个简单而功能全面的平台。与其他Ruby网络框架不同,Brut没有控制器、动词或资源,用户可以直接构建页面、表单和单一动作处理程序。生成的HTML在服务器上处理,用户可以自由编写JavaScript和CSS。

Brut的设计围绕低抽象和低仪式性,但并不是像Sinatra那样低级。Brut应用程序内置基于OpenTelemetry的仪器监控、基于Sequel的数据访问层,以及基于OptionParser的开发者自动化命令行应用。用户可以立即安装Brut,并在几分钟内构建和运行应用,而不需要手动安装Ruby。

Brut的文档非常详细,以下是一些亮点:

• 核心设计围绕类实例化为对象,通过这些对象调用方法。

• 不需要使用大量的include语句,避免产生庞大的函数块。

• 会话、闪存和表单参数都是实际的类和已定义的数据类型。

• 大多数方法都有文档,尽量减少对动态定义方法或method_missing的依赖。

Brut利用现代Web平台的优势,客户端和服务器端的表单验证融为一体,提供统一的用户体验。BrutJS是一个不断发展的库,包含自动化的自定义元素(Web组件),可增强HTML体验。通过esbuild,可以使用普通CSS并即时打包、压缩和加哈希,不再依赖PostCSS或SASS。

Brut默认设置最佳实践,例如应用程序会有合理的内容安全策略,数据库列默认为非空,外键将默认存在、被索引且不可为空。时间功能时区感知,且本地化工作简便易行。

Brut使用了一些优秀的Ruby库:

• RSpec用于书写测试,Brut包含自定义匹配器,以便更专注于代码的功能。

• Faker和FactoryBot用于设置测试和开发数据。

• Phlex用于生成HTML,不支持HAML。

此外,Brut不使用YAML重新创建配置,动态配置位于环境中,由dotenv gem管理。虽然开发环境的docker-compose.dx.yml使用了YAML,但其他地方不会。

Brut设计简洁明了,无需创造多余的抽象,开发者不必困惑于资源的index和show操作。Widgets页面命名为WidgetsPage,并可以通过/widgets访问。Brut不要求开发者了解复杂的概念,只有想使用的情况下可以使用函子或其他高级特性。

Brut的目标是简化开发流程,让开发者能专注于构建有趣的Web应用,而不是不断进行灵活性和架构决策的争论。开发者可以期待Brut的1.0版本,并期待在这个过程中享受开发的乐趣。


原文:https://naildrivin5.com/blog/2025/07/08/brut-a-new-web-framework-for-ruby.html

评论:https://news.ycombinator.com/item?id=44502463

Report Page