質問: cake1.3のシステムをcake2.9.3にバージョンアップするため、upgrade shellでソースコードをcake2用に変換しました。 変換後のファイルを確認したところ、モデルの中で削除されてしまったファイルがありました。 試してみた限りでは、以下のように、クラス名の最後が「Case」で終わっているファイルが削除されるような気がしています。 ``` class HogeCase extends AppModel { } ``` クラス名を変更してupgrade shellを実行し、その後でクラス名を戻すことで変換はできたのですが、なぜファイルが削除されてしまったのかが気になります。 理由をご存知の方がいらっしゃいましたらご教授ください。
回答: おそらく、locations サブコマンドが原因です。 > > Move files and folders to their new homes > > > UpgradeShell.php のソースコードを読むと、locations() メソッドが _movePhpFiles() というメソッドを実行しています。 _movePhpFiles()メソッドの中では、クラス名の末尾が`$this->_map`という配列のキーに一致するファイルを、 そのキーが指す値のパスに移動、もしくは`git mv -f`しています。 で、`$this->_map`プロパティを見ると、 > > クラス名の最後が「Case」で終わっているファイル > > > は'Test/Case'というパス(正確には [mywebsite]/app/Test/Case)に移動するよう、定義されています。 > > 削除されてしまったファイル > > > が該当ディレクトリに移動されていないか、確認してみてください。