なるようになるブログ

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

rails commit log流し読み(2024/12/14)

2024/12/14分のコミットです。

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

actionpack/CHANGELOG.md

activerecord/CHANGELOG.md


Use single query to retrieve indexes in PostgreSQL

activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rbの修正です。

PostgreSQLでindexの取得SQLがtable内のindex毎に実行されていたのを、1つのSQLでまとめて取得出来るよう修正しています。


Fix rdoc link to SchemaStatements#add_check_constraint

activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rbのdocの修正です。

validate_check_constraintメソッドのdoc内のadd_check_constraintについて説明している箇所がAPI docへのリンクになるよう修正しています。


Use Rack's SERVER_PROTOCOL instead of HTTP_VERSION header

actionpack/lib/action_controller/metal/live.rbの修正です。

HTTP versionを取得するのにHTTP_VERSION headerを参照していたのを、SERVER_PROTOCOL headerが定義されている場合はそちらを参照するよう修正しています。現在はそちらのheaderを使用するのが推奨されている為。

参考:Add SERVER_PROTOCOL to SPEC


Merge pull request #53926 from Ridhwana/Ridhwana/solid-queue

rails guidenのActive Job Basicsの修正です。

Solid Queueの説明を追加、及び、guide全体のタイポや言い回しの修正を行っています。


[RF-DOCS] Solid Cache updates in Caching with Rails: An Overview [ci-skip] (#53939)

rails guideのCaching with Rails: An Overviewの修正です。

Solid Cacheの説明を追加、及び、guide全体のタイポや言い回しの修正を行っています。


[RF-DOCS] Asset Pipeline Documentation (Propshaft) [ci-skip] (#53875)

rails guideのThe Asset Pipelineの修正です。

Sprocketsについての説明を削除し、Propshaftの機能やPropshaftを使用した場合の設定方法などの説明を追加しています。


Merge pull request #53907 from p8/guides/fix-canonical

rails guideの修正です。

canonicalタグの値が正しく設定されてなかったのを修正しています。


railties/test_parser: Cache work done in definition_for.

railties/lib/rails/test_unit/test_parser.rbの修正です。

テストファイルのメソッド定義箇所を取得するためのパース処理で、結果をキャッシュし同じファイルに対するパースが複数回行われないよう修正しています。


[RF-DOCS] Update Rails Testing Guide [ci skip] (#53872)

rails guideのTesting Rails Applicationsの修正です。

guide全体について、説明フローの修正や、言い回しの修正、説明が無かったassertionの追加、などを行っています。


Merge pull request #53918 from riseshia/ensure-gen-unique-sid-when-cache-store

actionpack/lib/action_dispatch/middleware/session/cache_store.rbの修正です。

ActionDispatch::Session::CacheStoreに、session idsを作成時に既に使用されていないかチェックするcheck_collisionsオプションを追加しています。session idsは128ビットのランダム値を使用しており、衝突する可能性は大分低い筈なのですが、大量に作成が必要なアプリなどで確実に衝突しないかをチェック出来るようにしたい時の為に追加されていります。なお、チェックの為に追加の書き込みが発生する為、デフォルトでは無効になっています。


Remove monkey patches of Range#each and Range#step

activesupport/lib/active_support/core_ext/range/each.rbの修正です。

サポートしているRubyでは不要になったActiveSupport::TimeWithZoneのためのRange#eachとRange#stepのモンキーパッチを削除しています。


Convert [] in heading to -squarebrackets in id

guides/rails_guides/markdown.rbの修正です。

guideの見出しの[]を-squarebracketsに変換するよう修正しています。errorsとerrors[]という見出しがあった場合に、違う値になるようにする為。


Add dot suffix to headings in guides

guides/rails_guides/markdown.rbの修正です。

見出しの末尾に.を追加するよう修正しています。

# Before:

1 Introduction
1.1 Welcome to Rails

# After:

1. Introduction
1.1. Welcome to Rails

Allow to tag serialized attributes as comparable

activerecord/lib/active_record/attribute_methods/serialization.rb、 activerecord/lib/active_record/type/serialized.rbの修正です。

Active Recordのserialized attributesを、deserialized objectで変更があったかどうかを比較出来るよう修正しています。deserialized objectで比較したい場合、serializedメソッドにcomparableオプションを指定する必要があります。

serialized :config, type: Hash, coder: JSON, comparable: true

元々はserializedした値でのみ比較だったのですが、それだとserializedの処理に変化があった場合(e.g. 末尾のスペースが削除されるようになった)に大量の変更が発生し、結果DBへの書き込みが増えてしまう、というような問題があった為。


Fix copy in activerecord CHANGELOG

activerecord/CHANGELOG.mdの修正です。

エントリー内のタイポやメソッド名の誤りを修正しています。


Do not validate associated records that haven't changed

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

値が変わっていない場合、associated recordsに対するvalidationを実行しないよう修正しています。