2019年8月15日,星期四

Rails 6.0:Action Mailbox、Action Text、多数据库、并行测试、默认 Webpacker 和 Zeitwerk

由 dhh 发布

处理收到的电子邮件、撰写富文本内容、连接多个数据库、并行化测试运行、将 JavaScript 与爱相结合,以及重写代码加载器。这些都是在使用 Web 和构建快速、新颖应用程序的基础方面的根本性改进。这正是我们过去十五年来一直在做的工作,而且我们仍在继续。这就是 RAILS SIX!

这还仅仅是头条改进!自从一年多前发布 Rails 5.2 以来,我们在整个框架中持续高速改进。仅在 2019 年,我们就 有 341 位代码贡献者 提交了改进和修复。我们试图在 发行说明 中总结其中的一些亮点,但还有更多。

虽然最终版本的发布比预期稍长一些,但这段时间都花在了对 Rails 6 的严格审查上。事实上,GitHub、Shopify 和 Basecamp 以及许多其他公司和应用程序,已经在生产环境中运行了数月之久的 Rails 6 的预发布版本。我们可能没有发现所有问题,但如果它对 GitHub、Shopify 和 Basecamp 来说足够好,那对你来说也可能足够好!

那么,Rails 6 将为你带来什么?快来看看吧。

Action Mailbox 将传入的电子邮件路由到类似控制器的邮箱,以便在 Rails 中进行处理。它附带了 Mailgun、Mandrill、Postmark 和 SendGrid 的入口。你还可以通过内置的 Exim、Postfix 和 Qmail 入口直接处理入站邮件。Action Mailbox 的基础工作由 George Claghorn 和我共同完成。

Action Text 为 Rails 带来了富文本内容和编辑功能。它包括 Trix 编辑器,可以处理从格式化、链接、引用、列表到嵌入式图像和画廊的一切。Trix 编辑器生成的富文本内容保存在其自己的 RichText 模型中,该模型与应用程序中的任何现有 Active Record 模型相关联。任何嵌入的图像(或其他附件)都会使用 Active Storage 自动存储,并与包含的 RichText 模型关联。Action Text 的基础工作由 Sam Stephenson、Javan Makhmali 和我共同完成。

新的 多数据库支持 让单个应用程序可以轻松地同时连接到,嗯,多个数据库!你可以选择将其分割成不同的数据库以实现扩展或隔离,或者通过读/写分离和副本数据库来提高性能。无论哪种方式,都有一个新的、简单的 API 来实现这一点,而无需深入 Active Record 的底层。多数据库支持的基础工作由 Eileen Uchitelle 和 Aaron Patterson 完成。

通过 并行测试支持,你终于可以利用机器上的所有核心来更快地运行大型测试套件。每个测试工作程序都有自己的数据库并在自己的线程中运行,这样你就不会将一个 CPU 占用 100%,而其他 9 个 CPU 闲置(你们都有 10 核 iMac Pro,对吧 😂)。太棒了!并行测试支持的基础工作由 Eileen Uchitelle 和 Aaron Patterson 完成。

Webpacker 现在通过新的 app/javascript 目录成为 Rails 的默认 JavaScript 打包器。但是,我们仍然将资产管道与 Sprockets 一起用于 CSS 和静态资产。这两者集成得非常好,在高级 JavaScript 功能和对其他资产的“开箱即用”方法之间提供了最佳的权衡。

Xavier Noria 的 新的 Zeitwerk Ruby 代码加载器。告别 const_missing,告别代码加载陷阱,拥抱 Module#autoload!

这些只是其中的一些重要新增功能,但 Rails 6.0 还包含了许多小的更改、修复和升级。我特别要指出的是:Action Cable 的正确测试,用 ES6 重写的 Action Cable JavaScript,防止 DNS 重绑定攻击,以及每个环境的凭据。此外,Rails 6 现在需要 Ruby 2.5.0+。你可以在 各个框架的 CHANGELOG 文件 中查看所有详细信息。

本次发布由发布经理 Rafael França 牵头,Kasper Timm Hansen 提供支持。

再次感谢所有为使 Rails 更好而不断努力的人!感谢所有使用 Rails 的人!我为看到这个开源框架在市场条款和相互愧疚的压力之外继续蓬勃发展感到无比自豪。这是我们彼此赠予的礼物,不求回报