なるようになるブログ

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

rails commit log流し読み(2026/09/17)

2026/09/17分のコミットです。

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

activerecord/CHANGELOG.md


Move view path normalization into PathSet

actionview/lib/action_view/lookup_context.rbactionview/lib/action_view/path_set.rbの修正です。

LookupContext class内で行っていたpathのnormalization処理をPathSet classに移動しています。templateのpath look処理でのオブジェクト生成数を減らす為。


Avoid returning through blocks

actionview/lib/action_view/path_set.rbの修正です。

ブロック内でreturnを使わないようリファクタリングしてます。ブロック内でreturnを使うとRuby 4.0以降でアロケーションが発生するため。


Avoid empty array allocation rendering template

actionview/lib/action_view/renderer/partial_renderer.rbの修正です。

template render時に空のarrayの生成を毎回行っていたのを、定数にして一度だけ生成するよう修正しています。


Avoid creating array for detail_args in fast path

actionview/lib/action_view/lookup_context.rbの修正です。

各メソッドでオプションが空の場合、不要なオブジェクト生成を行わないよう修正しています。


Cache registered_details keys

actionview/lib/action_view/lookup_context.rbの修正です。

LookupContext.registered_detailsが実行される度にdefault_procs.keysを計算していたのを、register_detail実行時に結果をキャッシュして以降はキャッシュした値を返すよう修正しています。


Don't reference connection in on_main block

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

on_mainブロック内でconnectionを参照するとブロックを共有可能にする際にエラーになっていたのを、connectionを使った処理をブロックの外で行い、結果だけをon_mainブロックに渡すよう修正しています。

ActiveSupport::Ractors.on_mainのblock内でconnectionを参照しないよう修正しています。connectionをblock内で参照するとエラーになってしまう為。


Consolidate common methods of Mysql2Adapter and TrilogyAdapter

Active Recordの修正です。

Mysql2AdapterTrilogyAdapterで共通の処理を親クラスのAbstractMysqlAdapterで定義するよう修正しています。


Replace the mysql5 fallback in ActiveRecord.database_cli with mariadb

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

ActiveRecord.database_climysql用フォールバックが、既に廃止されたMacPorts由来のmysql5バイナリを参照していたのを、現在MariaDBが提供しているmariadbを使うよう修正しています。


Merge pull request #58795 from kamipo/worktree-pg-schema-reader-search-path

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

indexesforeign_keyscheck_constraintsなどが、unqualified nameを使用して検索処理を行っていた為、同名のテーブルが複数のスキーマに存在すると両方のテーブルのインデックスや制約が返ってきてしまっていたのを、primary_keystable_optionsと同様にnqualified nameを使用してい一意に絞り込むよう修正しています。


Compute serialize_cast_value_compatible? on the main Ractor activemodel/lib/active_model/type/serialize_cast_value.rbの修正です。

@serialize_cast_value_compatibleの計算をmain Ractor上で実行するよう修正しています。non-main Ractorだとインスタンス変数の設定が出来ずエラーになってしまう為。


RDoc to Markdown in Action Cable

docの修正です。

引き続きAction CableのdocのフォーマットをRDocからMarkdownに変更しています


Fix tuple where key corrupting later conditions

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

whereにtuple syntaxとassociationのsyntaxを合わせて使用した際に、associationのcolumnの指定が正しく行われずエラーになってしまうバグがあったのを修正しています。

rails commit log流し読み(2026/09/16)

2026/09/16分のコミットです。

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

activerecord/CHANGELOG.md


Merge pull request #58768 from Shopify/remove-the-obsolete-datetime-fallback-from-the-c

rails guideのActive Support Core Extensionsの修正です。

すでにcore extensionsにないTime#sinceTime#agoメソッドについての説明を削除しています。


Merge pull request #58751 from yaroslav/faster-time-with-zone-formatting

activesupport/lib/active_support/time_with_zone.rbactivesupport/lib/active_support/values/time_zone.rbの修正です。

TimeWithZone#xmlschema#to_sが正規表現の置換やformat呼び出しで手動でオフセット文字列を組み立てていたのを、Time#iso8601Time#to_sにオフセット済みの時刻を渡してフォーマットさせるよう修正、及び、TimeZone.seconds_to_utc_offsetを配列を使ったformat呼び出しから固定テーブルの文字列展開に修正しています。高速化の為。


RDoc to Markdown in some Action Cable files

docの修正です。

Action CableのdocのフォーマットをRDocからMarkdownに変更しています


Skip leaky ractor tests

Active Modelのテストの修正です。

Ractor内でrequireが実行されるテストをskipするよう修正しています。Ractor内でrequireが実行されるとZeitwerkなどKernel#requireをaliasしているgemが正しく動作しなくなってしまう為。

参考:Bug #22273: Aliasing doesn't interact well with Module#prepend


Add JSON schema cache serializer

Active Record、Active Modelの修正です。

Active Recordのschema cacheをJSON形式で出力出来るよう修正しています。schema_cache_pathに指定されたpathが.jsonで終わっている場合、自動的にjsonで出力されるようになっています。

rails commit log流し読み(2026/09/15)

2026/09/15分のコミットです。

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

actionview/CHANGELOG.md

activesupport/CHANGELOG.md


Fix the Time.rfc3339 documentation example

activesupport/lib/active_support/core_ext/time/calculations.rbのdocの修正です。

Time.rfc3339のdocにあるexampleコードが実際の結果と異なる内容になっていたのを修正しています。


Fix the debug error page for SyntaxErrors with multi-line messages

actionpack/lib/action_dispatch/middleware/exception_wrapper.rbactivesupport/lib/active_support/syntax_error_proxy.rbの修正です。

複数行メッセージがあるSyntaxErrorが発生した場合に、debug error pageの表示でエラーになってしまうバグがあったのを修正しています。


Add herb:check task to verify Herb compatibility

Action Viewの修正です。

アプリケーションのERBテンプレートがHerbと互換性があるかどうかをチェックするための、herb:check taskを追加しています。Herbでエラーになるテンプレートがあった場合、エラーの内容とそのテンプレートのパスを表示してくれるようになっています。


Merge pull request #58764 from Shopify/activejob-ractor-workers

Active Job、railtiesの修正です。

Active JobのenqueueがRactorで出来るよう修正しています。


Filter the database password out of failed database task commands

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

database関係のtaskが失敗した際のエラーメッセージに、DBのpasswordが含まれないよう修正しています。


Pass Trilogy's SSL configuration to the mysql and mysqldump commands

Active Recordの修正です。

mysqlmysqldumpコマンド実行時に、TrilogyのSSL関連オプションが正しく指定されないバグがあったのを修正しています。


Merge pull request #58740 from iamdipak39p/fix-docker-entrypoint-thruster

railties/lib/rails/generators/rails/app/templates/docker-entrypoint.ttの修正です。

db:prepareを実行するかどうかのチェック(rails serverが指定されたかどうかのチェック)が、Thrusterを使用してrails serverを起動する場合に正しくチェック出来ないバグがあったのを修正しています。


Merge pull request #58663 from byroot/casted-values-indexed-row

Active Recordの修正です。

LazyAttributeSetで型変換済みの値を保持する変数が、最終的に違う変数と同じキーを持つにもかかわらずHashを使っていて無駄があったので、可能な場合は同じindexを使うmutableな行を使い、オブジェクトの生成を減らせるよう修正しています。


Merge pull request #58720 from carlosdanielpohlod/local-cache-read-multi-order

activesupport/lib/active_support/cache/strategy/local_cache.rbの修正です。

ActiveSupport::Cache::Store#read_multiがlocal cacheから値を取得する場合に、指定したkeyの順番で値が返ってなかったのを、keyの順番通り値を返すよう修正しています。


Bound background-maintenance checkout wait to checkout_timeout

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

background connections取得時のtimeoutの設定が固定で100秒だったのを、checkout_timeout configの値を使用するよう修正しています。


Fix keepalive: false being ignored in database.yml

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

database.ymlにのkeepaliveにfalseを指定した場合に、無効にならない(デフォルト値が使われてしまう)バグがあったのを修正しています。


RDoc to Markdown in activesupport/lib/active_support/*.rb

docの修正です。

activesupport/lib/active_support/*.rbのdocのフォーマットをRDocからMarkdownに変更しています。


RDoc to Markdown in the rest of AS

docの修正です。

Active Supportのdocを変換していないファイルのdocのフォーマットをRDocからMarkdownに変更しています。


File.atomic_write: close the temp file before renaming it

activesupport/lib/active_support/core_ext/file/atomic.rbの修正です。

File.atomic_writeで一時ファイルをrenameする際、まだファイルが開いたままでバッファの内容がOSに書き込まれておらず、rename直後にrename先が空になることがあるバグがあったのを修正しています。

rails commit log流し読み(2026/09/14)

2026/09/14分のコミットです。

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

activestorage/CHANGELOG.md


Introduce config.active_storage.draw_direct_upload_route (#58377)

Action Text、Active Storageの修正です。

Active Storageのdirect uploadのrouteを無効化するかどうかを指定する為の、config.active_storage.draw_direct_upload_routeを追加しています。authenticationやvalidationなしでのファイルのアップロードを出来ないようにする為。無効になっている場合、Action Textのrich_textareaは明示的に渡さない限りdata-direct-upload-urlが省略されるようになっています。


Enable Layout/BlockAlignment

Layout/BlockAlignment copを有効化、及び、各ファイルに適用しています。

rails commit log流し読み(2026/09/13)

2026/09/13分のコミットです。

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

activestorage/CHANGELOG.md

activerecord/CHANGELOG.md


Boot with an unsecurable libvips unless the processor uses it (#58734)

Active Storageの修正です。

Active Storageのvariant processorにmini_magickを使用しているが、古いlibivps(block_untrustedが使用出来ないバージョン)がインストールされている場合に、アプリの起動時にエラーになってしまっていたのを、vipsを使用していない場合はエラーにせず起動出来るよう修正しています。


Don't stub Rails.root in a new Action View test (#58753)

actionview/test/template/structured_event_subscriber_test.rbの修正です。

Structured Event SubscriberのtestがNameErrorでエラーになってしまうバグがあったのを修正しています。


Boot when libvips is missing (#58743)

activestorage/lib/active_storage/transformers/vips.rbactivestorage/lib/active_storage/vips.rbの修正です。

ruby-vips gemがloadされている、しかし、libvipsがインストールされていない場合に、アプリの起動時にエラーになってしまっていたのを、warningメッセージだけを出力して起動は出来るよう修正しています。


Merge pull request #58754 from flavorjones/card-422-to-markdown-delimiter

actiontext/lib/action_text/markdown_conversion.rbの修正です。

ActionText::MarkdownConversionでcodeとpreの中身をエスケープせずに出力していたのを、改行をまとめたうえでcode spanにする、1行に並べる要素の中の<pre>はinlineのcode spanする、等の変換を行うよう修正しています。stored XSS対策の為。


Fix PostgreSQL primary key introspection

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

INCLUDE句を持つcovering indexが主キーの場合に、非primary keyのcolumnまでprimary keyの一部として扱われ、bulk upsert時にそのcolumnが更新対象から外れてしまうバグがあったのを修正しています。


Fix indentation in actionpack/test/controller/parameters/mutators_test.rb

actionpack/test/controller/parameters/mutators_test.rbの修正です。

テストコードのインデントがずれている箇所があったのを修正しています。

rails commit log流し読み(2026/09/12)

2026/09/12分のコミットです。

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

actionpack/CHANGELOG.md


Include default headers in ActionController::Live responses. (#53403)

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

ActionController::Liveを使用しているcontrollersのresponseに、config.action_dispatch.default_headersで指定しているdefault headersが含まれるよう修正しています。


Make finder_needs_type_condition? ractor safe

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

modelのfinder_needs_type_condition?メソッドがRacor-safeになるよう修正しています。


Merge pull request #58261 from nuclearspike/av-start-subscriber-silenced

actionview/lib/action_view/structured_event_subscriber.rbの修正です。

Action Viewのstructured event subscriberがdebug modeの設定を無視して、debug modeがfalseの場合も通知処理が行われてしまうバグがあったのを修正しています。

rails commit log流し読み(2026/09/11)

2026/09/11分のコミットです。

CHANGELOGへの追加はありませんでした。


BroadCastlogger: Use each for setting log levels

activesupport/lib/active_support/broadcast_logger.rbの修正です。

各メソッドでlog levelを設定するのに不要なメソッド呼び出しを避けるよう修正しています。


BroadcastLogger: Simply implement setters

activesupport/lib/active_support/broadcast_logger.rbの修正です。

log levelのsetter methodから不要な引数を削除しています。


BroadcastLogger: Speed up dispatch

activesupport/lib/active_support/broadcast_logger.rbの修正です。

ログ出力処理で、内部の各loggerに対して直接メソッドを呼び出すよう修正しています。また、複数loggerが指定されている場合、ブロックの実行は最初のloggerでのみ行い結果を使い回すよう修正、不要なオブジェクトの生成を削減、などの改善を合わせて行っています。


Merge pull request #58711 from Shopify/reloader-ractor-workers

activesupport/lib/active_support/execution_wrapper.rbactivesupport/lib/active_support/reloader.rbの出力です。

reload対象のコードが無い場合、reloader classの変数の更新を行わないよう修正しています。Ractor worker向け対応の一環。


Merge pull request #58668 from Shopify/ec-aggregate-reflection-wip

Active Record、railtiesの修正です。

model reflectionsがRactor-shareableになるよう修正しています。


Move timestamp_attributes_for into SchemaContext

activerecord/lib/active_record/model_schema/schema_context.rbactiverecord/lib/active_record/timestamp.rbの修正です。

timestamp_attributes_for_xx attrをSchemaContextに移動しています。Ractor-safeにする為。


Share the time zone caches with Ractor workers

activesupport/lib/active_support/values/time_zone.rbrailties/lib/rails/application.rbの修正です。

time zone cacheがRactor-shareableになるよう修正しています。