なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2022/04/26)

2022/04/26分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activerecord/CHANGELOG.md


Merge pull request #44903 from rails/interlock

railties/lib/rails/application/finisher.rbの修正です。

reloadが有効の場合、eager loadの設定に関わらずinterlock hookの登録処理を行うよう修正しています。Zeitwerk loaderの場合、eager loadの指定はinterlock hookの登録には影響無い筈の為。


Merge pull request #44944 from ghiculescu/multi-db-reading-request

activerecord/lib/active_record/middleware/database_selector.rbactiverecord/lib/active_record/middleware/database_selector/resolver.rbの修正です。

DatabaseSelector::Resolverreading_request?メソッドをresolverでoverride出来るよう修正しています。POSTメソッドもread対象にしたい場合(GraphQLを使っている場合等)にアプリ側で対応出来るようにする為。


Merge pull request #44935 from dorianmariefr/patch-1

railties/lib/rails/generators/app_base.rbの修正です。

rails newskip_gitオプションのdescにgit initが実行されない、.gitattributesも生成されない旨説明を追加しています。


Merge pull request #44446 from Shopify/async-aggregates

Active Recordの修正です。

Active Recordに、async queryを生成する為のAPIを追加しています。

通常のAPIとは別に、async_countasync_pluckのようにasync_xxという形でメソッドが追加されています。これらのメソッドは呼び出しただけだとSQLは実行されない(ActiveRecord::Promise)ようになっており、実際のSQLActiveRecord::Promise#valueを呼び出したら実行されるようになっています。

promise = Post.where(published: true).async_count # => #<ActiveRecord::Promise status=pending>
promise.value # => 2

Only materialize the new transaction if it needs it

activerecord/lib/active_record/connection_adapters/abstract/transaction.rbの修正です。

transaction内でrequires_new: trueを指定して別のtransactionを開始した場合に、savepointを使用してのtransactionの管理が行われないバグがあったのを修正しています。


Merge pull request #44958 from fatkodima/fix-db_prepare-seeds

activerecord/lib/active_record/tasks/database_tasks.rbの修正です。

複数DBの設定がある場合に、db:prepare task実行時にdb:seed taskが複数回実行されてしまうバグがあったのを修正しています。


chore: remove git.io

.github/workflows/lint.ymlrailties/lib/rails/generators/app_base.rbの修正です。

git.io を使用、参照している箇所があったのを使用しないよう修正しています。git.io はdeprecatedになった為。参考: Git.io deprecation