なるようになるブログ

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

rails commit log流し読み(2025/02/13)

2025/02/13分のコミットです。

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


Fix typo in Rails routing guide

rails guideのRails Routing from the Outside Inの修正です。

Controller Namespaces and Routingセクション内の説明とexampleコードの内容が一致していない箇所があったのを修正しています。


Optimize String visitor by hand

actionpack/lib/action_dispatch/journey/nodes/node.rbactionpack/lib/action_dispatch/journey/visitors.rbの修正です。

journeyのString visitorがsendを多用していたのを、必要なメソッドを個別に定義するよう修正しています。メソッドが定義されていた方がメソッドキャッシュが効き高速になる為。


Stop eagerly computing request.route_uri_pattern

actionpack/lib/action_dispatch/http/request.rbactionpack/lib/action_dispatch/journey/router.rbの修正です。

request.route_uri_patternの組み立てを実際に値が必要になるまで遅延させるよう修正しています。request.route_uri_patternは特定のアプリケーション(GitHub)で使う為に導入されたのですが、通常の多くのアプリケーションでは使用していないと思われる、かつ、組み立て処理が重い処理になっている為。


Merge pull request #54503 from etiennebarrie/json-coder-fragment-native

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

jsonに変換する対象がJSON::Fragmentインスタンスだった場合、as_jsonJSON::Fragmentインスタンスをそのまま返せるよう修正しています。

参考:Introduce JSON::Fragment


Improve Fragment handling in JSON::Encoding

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

先のJSON::Fragmentインスタンスを返す処理について、classのチェックを他のclassのチェックと同様に行うよう修正しています。


Cache Journey Node#to_s

actionpack/lib/action_dispatch/journey/nodes/node.rbの修正です。

JourneyのNode#to_sの結果をキャッシュするよう修正しています。


Micro-optimize Router#find_routes

actionpack/lib/action_dispatch/journey/router.rbの修正です。

Router#find_routeseach_with_indexを使用していた箇所をeachを使用するようリファクタリングしています。eachの方が高速な為(YJITが有効な場合特に)、との事です。


Get rid of Jounry::Utils.unescape

actionpack/lib/action_dispatch/journey/router.rbactionpack/lib/action_dispatch/journey/router/utils.rbの修正です。

URIのenscape処理に独自メソッド(Journey::Utils.unescape)を使用していたのを、CGI.unescapeURIComponentを使用するよう修正しています。CGI.unescapeURIComponentの方が高速な為。


Micro-optimize Journey normalize_path

actionpack/lib/action_dispatch/journey/router/utils.rbの修正です。

normalize_pathメソッドでpathが正規化する必要ない値の場合、不要な正規化処理を行わないよう修正しています。


Micro optimize route sorting in Router find_routes

actionpack/lib/action_dispatch/journey/router.rbの修正です。

find_routesメソッドでsort_by!を使用していた箇所をsort!を使用するよう修正しています。sort!の方が高速な為。


Skip get_header and set_header for hot methods on Request

actionpack/lib/action_dispatch/http/parameters.rbactionpack/lib/action_dispatch/http/request.rbの修正です。

headerの値を取得、設定、削除するのにメソッド(get_headerset_headerdelete_header)を使用していたのを、@envを直接操作するよう修正しています。メソッド呼び出し削減の為。