2019 年 1 月 18 日,星期五

Rails 6.0.0 beta1: Action Mailbox, Action Text, 多数据库支持, 并行测试, Webpacker 默认启用

作者:dhh

Rails 6 的第一个 beta 版本发布了!它包含了令人惊叹的新功能,我们非常兴奋与大家分享。其中包含两个主要的新框架 - Action Mailbox 和 Action Text - 以及两个重要的默认可扩展性升级,分别是多数据库支持和并行测试。

Action Mailbox 将传入的电子邮件路由到类似控制器的邮箱,以便在 Rails 中进行处理。它附带了针对 Amazon SES、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 现在是 Rails 的默认 JavaScript 捆绑程序,通过新的 app/javascript 目录实现。不过,我们仍在使用带有 Sprockets 的资产管道来处理 CSS 和静态资产。两者很好地集成,在高级 JavaScript 功能与其他资产的即用型方法之间提供了最佳的平衡。

这些只是部分重要新增功能,但 Rails 6.0 还包含许多细微的更改、修复和升级。我想要提到的有:正确的 Action Cable 测试、用 ES6 重写的 Action Cable JavaScript、防止 DNS 重新绑定攻击以及每个环境的凭证。此外,Rails 6 现在需要 Ruby 2.5.0+。您可以查看 各个框架的 CHANGELOG 文件,了解详细的更新信息。

最后,您应该关注 Xavier Noria 为 Ruby 推出的新代码加载器 Zeitwerk。它没有在 beta1 中集成,但从 beta2 开始,它将成为 Rails 的新自动加载器。准备好告别代码中任何遗留的 require 或 require_dependency 调用吧!

我们仍然大致按照 发布的 Rails 6.0 最终版本的时间线 进行,因此请参考该计划以进行迁移规划,但请您帮助我们测试 beta1 上的应用程序!我还鼓励任何具有中等程度 Rails 经验的人员从 beta1 开始创建新应用程序,而不是使用 Rails 5.2.x 系列。Basecamp 已经在生产环境中运行 Rails 6.0.0.beta1,Shopify 和 GitHub 以及其他公司肯定会紧随其后。这不是一个不稳定的版本。

此版本以及所有通往 Rails 6.0 最终版本的版本都是由版本经理 Rafael França 在 Kasper Timm Hansen 的支持下完成的。

再次感谢所有为使 Rails 变得更好而努力工作的人!令人难以置信的是,在这些年之后,我们仍然能够保持如此高的改进速度。Rails 处于前所未有的最佳状态,可以帮助最广泛的 Web 开发人员以他们喜欢的方式构建出色的应用程序。让快乐的火花燃起吧!