【Rails Code Reading 4回目】Break up abstract connection pool #41339
RailsのPRを読んで、記事にまとめています。
今回は、ActiveRecordの ActiveRecord::ConnectionAdapters::ConnectionHandler
のファイルの変更に関する実装を読んだ。
PRの概要にも書かれてるように、単純にファイルを分割しただけのPRの模様。
こういうPRでもmergeされんですね。
ちなみに、ActiveRecord周りの実装をまともに読んだのは今日が初めてでした。
ActiveRecord::Base
のクラスメソッドに、DBコネクションを確立したり、クエリ生成を実装するメソッド群があり、ActiveRecord::Base
を継承したインスタンスが、このコネクションやらクエリを使ってDBに書き込んでいく、
みたいな設計になっているみたいだった。
バリデーションや、コールバック、アトリビュートの負荷などは、ActiveModel
やActiveSupport
側に実装されているのも確認できた。
一方、Relation周りの機能はActiveRecordに実装されていた。
多少、Railsの内部実装がわかってきた気がする。