AppBaseから未使用のopen-uri requireを削除
rails/generators/app_base.rb から16年前に追加された未使用の open-uri requireが削除されました。この変更により、rails app:update コマンドの起動時間が短縮されます。
背景
open-uri の require は、2008年の 785493f で追加されたものです。当時のコードは Kernel#open を使用していましたが、その後 --builder オプションの削除に伴い bce6cbd で該当のコードも削除されました。requireだけが残存していた状態です。
#56824 で報告されているように、rails app:update の実行に3秒以上かかる問題があり、この未使用requireが起動時間に影響していました。Thorの内部では open-uri をオンデマンドでrequireしているため、Rails側でのrequireは不要です。
技術的な変更
railties/lib/rails/generators/app_base.rb から require "open-uri" の行が削除されました。
変更前:
require "fileutils"
require "digest/md5"
require "rails/version" unless defined?(Rails::VERSION)
require "open-uri"
require "tsort"
require "uri"
変更後:
require "fileutils"
require "digest/md5"
require "rails/version" unless defined?(Rails::VERSION)
require "tsort"
require "uri"
AppBase内で open-uri の機能は使用されていないため、この削除による機能への影響はありません。uri ライブラリのrequireは残されており、URIの基本的な操作は引き続き可能です。
設計判断
16年前の残存コードの削除 という判断が下されました。
PR内では、コミット履歴を遡って open-uri requireの由来を特定し、実際に使用されていないことを確認したうえで削除しています。requireが追加された当時のコンテキスト(--builder オプション)が既に存在しないことを確認し、安全に削除できると判断されました。
まとめ
本PRは、16年前に追加され実際には使用されていない open-uri requireを削除することで、rails app:update コマンドの起動時間を改善しました。コード考古学的な調査により安全性を確認したうえでの削除であり、機能への影響なく起動時間の最適化を実現しています。