Study further more

進捗出します

【Rails Code Reading 4回目】Break up abstract connection pool #41339

RailsのPRを読んで、記事にまとめています。

github.com

今回は、ActiveRecordの ActiveRecord::ConnectionAdapters::ConnectionHandlerのファイルの変更に関する実装を読んだ。

PRの概要にも書かれてるように、単純にファイルを分割しただけのPRの模様。

こういうPRでもmergeされんですね。

ちなみに、ActiveRecord周りの実装をまともに読んだのは今日が初めてでした。

ActiveRecord::Baseのクラスメソッドに、DBコネクションを確立したり、クエリ生成を実装するメソッド群があり、ActiveRecord::Baseを継承したインスタンスが、このコネクションやらクエリを使ってDBに書き込んでいく、 みたいな設計になっているみたいだった。

バリデーションや、コールバック、アトリビュートの負荷などは、ActiveModelActiveSupport側に実装されているのも確認できた。

一方、Relation周りの機能はActiveRecordに実装されていた。

多少、Railsの内部実装がわかってきた気がする。