`bin/rails` と `bin/setup` のリネーム後の破損を修正
gemのリネームに伴い壊れていた bin/rails と bin/setup の2箇所を修正し、bin/rails console とセットアップスクリプトを正常に動作させます。
背景
このリポジトリは以前 actiontext/lexical という名前で開発されていましたが、5d1adc86 のコミットで lexxy へリネームされました。そのリネームの際に bin/rails 内の ENGINE_PATH が旧パス lib/actiontext/lexical/engine を指したままになっており、該当ファイルはすでに存在しないため bin/rails console が起動できない状態でした。
また、bin/setup では bin/rails db:prepare を実行していましたが、エンジンのルートにはそのタスクが存在しません。Railsエンジンのダミーアプリを対象に操作するには app: プレフィックスを付けて app:db:prepare を使う必要があります。
技術的な変更
2つのファイルにそれぞれ1行ずつ修正が加えられています。
bin/rails の ENGINE_PATH の修正:
変更前:
-ENGINE_PATH = File.expand_path("../lib/actiontext/lexical/engine", __dir__)
変更後:
+ENGINE_PATH = File.expand_path("../lib/lexxy", __dir__)
ENGINE_PATH はRailsがエンジンを読み込む際に参照するエントリポイントです。旧パス lib/actiontext/lexical/engine はリネーム後に削除されており、新しいエントリポイントはgemのルートファイルである lib/lexxy.rb を指す lib/lexxy に変更されています。PR本文にある通り、これにより lexxy.rb が engine.rb より先にロードされる正しい順序が担保されます。
bin/setup のDBタスクの修正:
変更前:
-bin/rails db:prepare
変更後:
+bin/rails app:db:prepare
Railsエンジン単体のルートには db:prepare タスクは存在せず、test/dummy 以下のダミーアプリに対してDB操作を行うには app: プレフィックスを使ってタスクをディスパッチする必要があります。
設計判断
lib/lexxy(gemエントリ)を ENGINE_PATH として指定する方式 が採用されています。
従来は lib/actiontext/lexical/engine のように engine.rb を直接指していましたが、新しいパスは lib/lexxy(すなわち lib/lexxy.rb)を指しています。PR本文が明示する通り、これにより lexxy.rb が engine.rb より先にロードされる順序が保証され、エンジン初期化時の依存関係が正しく解決されます。engine.rb を直接指す方式に戻すのではなく、gemのエントリポイントを経由させる設計はより堅牢な読み込み順の制御といえます。
まとめ
gemのリネームという過去の変更に起因した2つの破損をそれぞれ最小限の1行修正で解消した変更です。ENGINE_PATH の修正はロード順の正確性を担保し、app:db:prepare の適用はエンジン開発における標準的なタスクディスパッチの作法を反映しています。