ビルド済みrails-ujs.jsをリポジトリから削除
ActionViewのアセットディレクトリに残存していたビルド済みの rails-ujs.js および rails-ujs.esm.js が削除されました。PR本文が「数バージョン前に削除されるべきだった」と述べており、長期にわたって放置されていたファイルの整理です。
背景
rails-ujsは、data-confirm・data-method・data-remoteなどのHTML属性を通じてAjax送信やフォーム操作を実現する Unobtrusive JavaScript(UJS) ライブラリです。Rails向けJavaScriptの中心的な役割を担っていましたが、Turboの台頭とともにその役割は縮小してきました。
今回削除された2ファイルは、actionview/app/javascript 配下のソースコードからビルドされた 配布用成果物(ビルドアーティファクト) です。ソースコードとは別に、コンパイル済みのJavaScriptがリポジトリ内に直接コミットされている状態でした。PR本文の「a few versions ago」という表現が示すように、本来であれば以前のバージョンアップ時に整理されるべきファイルが残り続けていた状況です。
技術的な変更
削除されたのは以下の2ファイルで、合計1,316行が除去されました。
-
actionview/app/assets/javascripts/rails-ujs.js(630行削除): UMD形式のビルド成果物。ブラウザグローバル(window.Rails)・CommonJS・AMD の各モジュール形式に対応したラッパーを持つ。 -
actionview/app/assets/javascripts/rails-ujs.esm.js(686行削除): ES Modules形式のビルド成果物。import構文での利用を想定したバリアント。
両ファイルの内容はほぼ同一で、linkClickSelector・buttonClickSelector・formSubmitSelector などのCSSセレクタ定数、CSPノンスの読み取りロジック、フォームの無効化・有効化処理などが含まれていました。これらのロジックのソースは actionview/app/javascript 配下に引き続き存在しており、ソースコード自体は削除されていません。
設計判断
ビルド成果物をリポジトリに含めない方針への統一が今回の変更の趣旨です。ソースコードとビルド成果物を同一リポジトリに混在させると、変更のたびに両者の同期が必要となり、差分が意味を持ちにくくなります。
また、rails-ujs.js 内の formSubmitSelector が form:not([data-turbo=true]) というセレクタを持っていたことから、このファイルがTurboとの共存を前提とした時期のビルド成果物であることが読み取れます。Turboへの移行が進んだ現在、このファイルへの依存が残っているケースは限定的と判断されたと考えられます。
まとめ
今回の変更は機能の追加や修正ではなく、管理コストを生む不要なビルド成果物の除去です。ソースコードは残存しているため、rails-ujsの機能自体への影響はありませんが、actionview/app/assets/javascripts/rails-ujs.js を直接参照・配信していたアプリケーションは依存関係の見直しが必要になります。