2019年1月18日,星期五

Rails 6.0.0 beta1:Action Mailbox、Action Text、多数据库、并行测试、默认Webpacker

由 dhh 发布

Rails 6 的第一个 beta 版本发布了!它包含了我们非常兴奋地想与大家分享的海量全新内容。其中有两个重大的新框架——Action Mailbox 和 Action Text——以及两个默认支持的、对扩展性至关重要的升级:多数据库支持和并行测试。

Action Mailbox 将传入的电子邮件路由到类似控制器的 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 个闲置(你们都有 10 核的 iMac Pro,对吧 😂)。太棒了!并行测试支持的基础工作由 Eileen Uchitelle 和 Aaron Patterson 完成。

Webpacker 现在通过新的 app/javascript 目录成为 Rails 的默认 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 开发人员以他们喜爱的方式构建出色的应用程序。愿喜悦闪耀!