2023 年 6 月 9 日,星期五

轨道内本周 - 2023 年 6 月 9 日

由 Emmanuel Hayford 发布

嗨!Emmanuel 在此执笔,我正乘坐开往卡托维兹的火车!在过去几周内,Rails 代码库发生了一些重大进展!让我们来看看其中一些进展,好吗?

创建一个类级别 #with_routing 帮助器现在可以在类级别调用 with_routing 帮助器。在该级别调用时,将在每次测试前设置路由并在每次测试后重置路由。例如,

class RoutingTest < ActionController::TestCase
      with_routing do |routes|
        routes.draw do
          resources :articles
          resources :authors
        end
      end
      def test_articles_route
        assert_routing("/articles", controller: "articles", action: "index")
      end
       def test_authors_route
        assert_routing("/authors", controller: "authors", action: "index")
      end
    end

允许从架构派生复合主键使用包含复合主键的架构启动应用程序时,将不再发出警告,也不再将 ActiveRecord::Base#primary_key 值设置为 nil

例如,考虑一个名为 travel_routes 的表和一个对应的 TravelRoute 模型。在这种情况下,TravelRoute.primary_key 值将自动派生为 [“origin”, “destination”],如下例所示

create_table :travel_routes, primary_key: [:origin, :destination], force: true do |t|
     t.string :origin
     t.string :destination
   end
   class TravelRoute < ActiveRecord::Base; end

在与数据库相关的异常中存储 connection_pool当适配器引发异常时,包含 connection_pool 非常有用,因为它提供了额外的上下文。此上下文包括触发异常的连接相关信息以及涉及的角色和分片的信息。

将引擎 draw_paths 添加到应用程序通过将引擎的 draw 路径添加到应用程序路由设置中,应用程序可以访问和利用引擎路径中定义的路由文件。

改进 MIME 类型中的已引用参数Mime::Type 现在支持处理带参数的类型,确保正确处理引号。在解析 “accept” 标头时,保留 “q” 参数之前的参数,并且如果找到匹配的 MIME 类型,则相应地使用它。为了保持现有功能,已实施一项后备机制,用于搜索无参数的媒体类型。

使用复合主键和多列排序支持批量处理find_eachfind_in_batchesin_batches 方法现在支持多列排序。在表上使用复合主键时,可以指定每个键的升序或降序。示例

Person.find_each(order: [:desc, :asc]) do |person|
      person.party_all_night!
    end

今天的更新就到这里。在过去七天中,我们有幸见证了 30 位杰出人士对 Rails 框架的贡献!

让我们期待下一期的更新!

Rails 中有趣的提交、请求拉取以及更多每周内幕独家报道!

订阅以接收这些更新邮件。