Rails 6.1 的第二个候选版本已经发布,为那些已经尝试过这个版本的开发者带来了更强大的体验。我们一直在努力调整和改进,让这个版本的体验对所有人来说都更加流畅。最终版本计划在下周发布。
Rails 这些年来发展得如此之快,令人惊叹。虽然我们还需要对 入门流程 进行一些改进,但 Rails 已经比以往任何时候都更好。此版本中的功能侧重于添加您需要保持应用程序运行多年的功能。
让我们来看看一些新的功能
Rails 6.1 提供了 每个数据库切换连接 的功能。在 6.0 中,如果您切换到 reading
角色,则所有数据库连接也会切换到阅读角色。现在在 6.1 中,如果您在配置中将 legacy_connection_handling
设置为 false
,Rails 将允许您通过在相应的抽象类上调用 connected_to
来切换单个数据库的连接。
Rails 6.0 提供了对数据库进行功能性分区(多个分区,不同的模式)的能力,但无法支持水平分片(相同的模式,多个分区)。Rails 无法支持水平分片,因为 Active Record 中的模型只能在每个角色每个类中拥有一个连接。现在这个问题已经解决了,Rails 现在可以 支持水平分片。
除了添加水平分片支持外,我们还为多个数据库添加了大量新功能,并改进了许多内部功能。 Kyle Thompson 添加了对 数据库命名空间任务 的支持,例如 db:schema:dump:namespace
、db:schema:load:namespace
、db:structure:dump:namespace
和 db:structure:load:namespace
。Shopify 的 Jean Boussier 改进了 连接池管理。
除了许多数据库和连接管理改进之外,Aaron Patterson 和 Eileen M. Uchitelle 添加了对 严格加载关联 的支持。使用此功能,您可以确保所有关联都按需加载,并在发生之前阻止 N+1 查询。 Kevin Deisz 添加了对 关联声明 的额外支持,bogdanvlviv 添加了对 默认情况下开启严格加载 的支持。
Rails 6.1 添加了“委托类型”作为单表继承的替代方案。这对于表示类层次结构很有帮助,允许超类成为由其自身表表示的具体类。每个子类都有自己的表来存储额外的属性。请查看由 DHH 编写的 拉取请求。
异步销毁关联添加了应用程序在后台作业中 destroy
关联的能力。这可以帮助您在销毁数据时避免应用程序中的超时和其他性能问题。该 实现 是一个团队合作的结果 - 该 PR 由 Basecamp 的 George Claghorn 提出,GitHub 的 Cory Gwin 提供了进一步的支持,并由 Shopify 的 Rafael França 和 Adrianna Chang 完成。
Active Model 的错误现在是对象,具有一个接口,允许您的应用程序更轻松地处理和交互模型抛出的错误。 该功能 由 lulalala 实现,包括查询接口,支持更精确的测试,以及访问错误详细信息。
Active Storage 在 Rails 6.1 中得到了很好的更新!您现在可以为要存储附件的服务配置附件。该 功能 由 Dmitry Tsepelev 实现。
此外,Rails 6.1 为 Active Storage 添加了对 blob 的永久 URL 的支持。由 Shopify 的 Peter Zhu 实现的此功能允许您配置附件以使用私有或公有 URL,并确保公有 URL 将始终使用永久 URL。
如果您喜欢运行没有弃用警告的应用程序,那么此功能适合您。此功能允许应用程序 选择性地抛出错误,如果抛出弃用警告。这对于确保开发人员不会重新引入已经修复的弃用警告非常有用。此功能由 Test Double 的 Cliff Pruitt 实现!
发布不仅仅是关于您获得的酷炫功能。它还包括修复错误、提高性能以及使 Rails 对每个人来说都更加稳定。此版本包含一个改进,该改进 如果 where
传递空数组,则避免进行查询,由 Molly Struve 报告,由 John Hawthorn 实现。 Eileen M. Uchitelle 和 Aaron Patterson 还实现了一个 性能改进,当我们知道所有值都是整数时,可以加快 where
查询的速度。
classic
自动加载器已弃用自第一个 Rails 版本发布以来,classic
自动加载器一直为我们服务良好,但是现在出现了一个新家伙,它将开始其弃用周期。
强烈建议新的 Rails 项目不要使用 classic
自动加载器,我们建议在升级时,使用 classic
运行的现有项目切换到 zeitwerk
模式。请查看 升级 Ruby on Rails 指南以获取提示。
Rails 6.1 中有许多很棒的变化。 686 人对 Rails 做出了贡献。查看 CHANGELOGS 以获取有关错误修复、性能改进和其他功能的更多详细信息。
感谢所有报告错误、提交拉取请求并帮助改进 Rails 的人。由于您的辛勤工作,Rails 变得更加出色!
我们希望您测试 Rails 6.1,并像我们一样喜欢它。请将任何错误报告给 Rails 问题跟踪器。