fukuoka.ex代表のpiacereです
ご覧いただいて、ありがとうございます
Phoenixは、最新版の1.4が出たものの、関連ライブラリのバージョンアップが追いついていない(特にEcto 3.x系の関連)ことがあり、Phoenix 1.3系に戻したいケースがあるため、バージョン確認/アンインストール/インストールの手順をまとめておきました
なお、「Phoenix」は、ElixirのWebフレームワークです
内容が、面白かったり、気に入ったら、「いいね」よろしくお願いします
Phoenixのインストール
mix archive.install hex phx_new
mix archive.install hex phx_new 1.6.5
mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
※Phoenix 1.3は、ライブラリ(plug_cowboy)不足で起動失敗するので、 @Yoosuke さんの こちらのコラムを参考にしてください
Phoenixのアンインストール(もしくはアップグレード)
mix archive.uninstall phx_new
Phoenixのアップグレード用コマンドは無いので、一度、アンインストールして、インストールし直してください
インストール済みPhoenixバージョンを確認する
mix phx.new -v
Phoenix v1.6.6
Phoenixのパッケージ名を確認する
mix archive
…(インストール済パッケージが並ぶ)
* phx_new-1.6.6
…(インストール済パッケージが並ぶ)
Phoenix 1.3インストール済で1.4以上をインストールすると…
以下のようなエラーが出るので、先にアンインストールは行ってください
== Compilation error in file lib/phx_new/ecto.ex ==
** (File.Error) could not read file "c:/Users/chris/oss/phoenix/installer/templates/phx_ecto/repo.ex": no such file or directory
(elixir) lib/file.ex:319: File.read!/1
lib/phx_new/generator.ex:28: anonymous fn/4 in Phx.New.Generator."MACRO-__before_compile__"/2
(elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/phx_new/generator.ex:24: anonymous fn/3 in Phx.New.Generator."MACRO-__before_compile__"/2
(elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
expanding macro: Phx.New.Generator.__before_compile__/1
lib/phx_new/ecto.ex:1: Phx.New.Ecto (module)
注意:既存Phoenix PJのバージョンはmix phx.newした際のバージョンのまま
Phoenixは、起動済みのWebサーバ上で動くWebアプリケーションとは異なり、各Phoenix PJ毎にPhoenixのWebサーバ機能が搭載されたアプリケーションとして構築されるため、Phoenixをインストールし直しても、構築済みのPhoenixのバージョンは変わりません
Phoenixの実態は、Webサーバ機能を含んだソースコードやアセットをジェネレートするアプリケーションに過ぎず、PJ生成時点のインストール済Phoenixバージョンでソレを行うだけなのです