現象
Phoenix.new で新しいプロジェクトを作っても
エラーが発生して動かない状況に陥ってしまいました。
復旧方法
先に復旧方法を挙げると、
Phoenix Frameworkのバージョンをv0.15.0に上げれば動くようになりました。
(元々のバージョンはメモし忘れた。。)
バージョンアップ方法
Githubから直接ダウンロードしてインストールしようとするとエラーが発生したため、
こちらからローカルに.ezファイルをダウンロードしてインストールしました。
(詳しくは参考記事を参照ください)
>mix archive.install C:\phoenix_new-0.15.0.ez
発生したエラーについて
mix phoenix.server を実行すると下記のようなエラーが発生しました。
== Compilation error on file lib/phoenix/code_reloader.ex ==
** (CompileError) lib/phoenix/code_reloader.ex:61: function full_path/1 undefined
(stdlib) lists.erl:1337: :lists.foreach/2
(stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
code_reloader.ex内で使用されているfull_path関数が定義されていないとのことです。
正常に動作するプロジェクト内を見てみると、plug/lib/plug/conn.ex で定義されていましたが、
エラーが発生しているプロジェクトでは定義がごっそり消えてました。
とりあえず、code_reloader.exからfull_pathを呼んでるところを全て消した状態にしたら、
動作しました。
github上では、code_reloader.exからfull_pathを呼ぶ部分がconn.request_pathを呼ぶように変更されていたので、
ライブラリ間でバージョンの差異が出てるんだろうと思い、バージョンアップすることに
参考記事
こちらの記事を参考にさせていただきました。
[Elixir+Phoenix]Upgrade phoenix.new of mix archive