Rails 6.1

2020-12-10 04:32:33

Rails 6.1已经发布,哇,它有很多很棒的东西!过去几个月来,我们一直在努力工作,以实现对多个数据库的改进,增加了对销毁作业中的关联而不是内存中的关联的支持,将错误转化为对象等等。

多年来,Rails的发展令人惊奇,尽管我们在入职流程上有一些改进,但Rails从未比现在更好。此版本中的功能着重于添加所需的功能,以使应用程序在未来几年内保持正常运行。

Rails 6.1使您能够切换每个数据库的连接。在6.0中,如果您切换到读取角色,则所有数据库连接也都切换到读取角色。现在在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编写的请求请求。

销毁关联异步功能使应用程序可以销毁后台作业中的关联。这可以帮助您避免破坏数据时应用程序中的超时和其他性能问题。该实现是一个集体的努力-PR由Basecamp的George Claghorn启动,由GitHub的Cory Gwin添加了进一步的支持,并由Shopify的RafaelFrança和Adrianna Chang最终确定了。

Active Model的错误现在是带有接口的对象,该接口使您的应用程序可以更轻松地处理模型引发的错误并与之交互。该功能由lulalala实现,并包括一个查询界面,可以进行更精确的测试以及访问错误详细信息。

Active Storage在Rails 6.1中进行了很好的更新!现在,您可以为要存储附件的服务配置附件。此功能由Dmitry Tsepelev实现。

此外,Rails 6.1为Active Directory添加了对Blob永久URL的支持。由Shopify的Peter Zhu实施,此功能允许将您的附件配置为使用私有或公共URL,并确保公共URL将始终使用永久URL。

如果您想免费运行应用程序弃用警告,那么此功能非常适合您。该功能允许应用程序在引发弃用警告时有选择地引发错误。这对于确保开发人员不要重新引入已经修复的弃用警告很有用。该功能由Test Double的Cliff Pruitt实现!

发布不仅与您获得的强大功能有关。这还涉及到修复错误,提高性能以及使Rails对所有人更稳定。此版本包括一项改进功能,该功能可以避免查询Molly Struve报告的空数组以及John Hawthorn实现的修复程序是否传递到哪里。 Eileen M. Uchitelle和Aaron Patterson还实现了性能改进,当我们知道所有值都是整数时,可以加快查询速度。

自从首次发布Rails以来,经典的自动装带器一直为我们提供良好的服务,但是有一个新手正在酝酿中,它将开始其弃用周期。

强烈建议您不要使用经典的自动加载器来进行新的Rails项目,并且我们建议升级时在经典版本上运行的现有项目切换到zeitwerk模式。 请查看《升级Ruby on Rails指南》以获取提示。 Rails 6.1的变化很大。 654人为Rails贡献了力量。 请查看CHANGELOGS,以获取有关错误修复,性能改进和其他功能的更多详细信息。 感谢所有报告错误,发送请求请求并帮助改进Rails的人。 Rails更好,因为您的辛勤工作!