2019 年 8 月 15 日星期四

Rails 6.0:Action Mailbox、Action Text、Multiple DB、并行测试、默认的 Webpacker 和 Zeitwerk

发布者:dhh

处理传入电子邮件、撰写富文本内容、连接到多个数据库、并行测试运行、以喜爱之心集成 JavaScript 和重新编写代码加载器。这些都是适用于网络处理和构建快速新颖应用程序的基础改进。这是我们在过去十五年内一直在从事的工作,我们仍旧在继续。这就是 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 模型中。任何嵌入式图像(或其他附件)都使用活动存储自动存储,并与包含的 RichText 模型相关联。Action Text 的基础性工作由 Sam Stephenson、Javan Makhmali 和本人完成。

新的多数据库支持让单个应用程序可以轻松连接到多个数据库,而且可以在同一时间进行!你可以这样做,因为你想将某些记录按比例或隔离分段到其自身的数据库中,或者因为正在对副本数据库进行读写拆分以提高性能。无论哪种方式,都有一个新的简单 API,无需深入了解 Active Record 的内容即可实现此目的。多数据库支持的基础工作由 Eileen Uchitelle 和 Aaron Patterson 完成。

使用并行测试支持,你最终可以利用计算机中的所有内核来更快地运行大型测试套件。每个测试工作线程具有自己的数据库,并在自己的线程中运行,因此你不会将一个 CPU 固定到 100%,而其他 9 个 CPU 则闲置(你们有十核 iMac Pro,对吗 😂)。万岁!并行测试支持的基础工作由 Eileen Uchitelle 和 Aaron Patterson 完成。

通过新的 app/javascript 目录,Webpacker 现在是 Rails 的默认 JavaScript 捆绑器。不过,我们仍在为 CSS 和静态资源与 Sprockets 一起使用资产管道。这两者很好地集成在一起,并提供了高级 JavaScript 特性与对其他资源的“即用型”方法的最佳折中方案。

Xavier Noria 为 Ruby 编写的新 Zeitwerk 代码加载器。不再有 const_missing,不再出现代码加载错误,Module#autoload!出现了。

这些只是一些特别的附加功能,但 Rails 6.0 还包含了其他较小的更改、修复和升级。我这里仅提一些:正确的 Action Cable 测试,用 ES6 重写的 Action Cable JavaScript,针对 DNS 重新绑定攻击的保护,以及针对每个环境的凭据。此外,Rails 6 现在需要 Ruby 2.5.0+。你可以在各个框架的变更日志文件详细了解一切。

此次发布由版本经理 Rafael França 负责,并得到 Kasper Timm Hansen 的支持。

再次感谢一直致力于让 Rails 变得更好的每个人!感谢所有使用 Rails 的人!我非常自豪地看到这个开源框架在市场条款和相互内疚的压力之外继续蓬勃发展。这是我们彼此给予的礼物,并且不期望任何回报