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.rb
、
actionpack/lib/action_dispatch/journey/visitors.rb
の修正です。
journeyのString visitorがsend
を多用していたのを、必要なメソッドを個別に定義するよう修正しています。メソッドが定義されていた方がメソッドキャッシュが効き高速になる為。
Stop eagerly computing request.route_uri_pattern
actionpack/lib/action_dispatch/http/request.rb
、
actionpack/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_json
がJSON::Fragment
のインスタンスをそのまま返せるよう修正しています。
Improve Fragment handling in JSON::Encoding
activesupport/lib/active_support/json/encoding.rb
の修正です。
先のJSON::Fragment
のインスタンスを返す処理について、classのチェックを他のclassのチェックと同様に行うよう修正しています。
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_routes
でeach_with_index
を使用していた箇所をeach
を使用するようリファクタリングしています。each
の方が高速な為(YJITが有効な場合特に)、との事です。
Get rid of Jounry::Utils.unescape
actionpack/lib/action_dispatch/journey/router.rb
、
actionpack/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.rb
、
actionpack/lib/action_dispatch/http/request.rb
の修正です。
headerの値を取得、設定、削除するのにメソッド(get_header
、set_header
、delete_header
)を使用していたのを、@env
を直接操作するよう修正しています。メソッド呼び出し削減の為。