fukuoka.ex代表のpiacereです
ご覧いただいて、ありがとうございます
革新的なアップデートてんこ盛りのPhoenix 1.4.0-rc.xを数回に分けて試す連載です
早くもrc.1が出たので、今回からrc.1にスイッチして進めます
前回までの記事は、以下になります
|> Phoenix 1.4rcを試す① アップデート紹介編
今回は、Phoenix 1.4.0-rc.1をインストールして、動かしてみます
なお、Phoenixは、ElixirのWebフレームワークです
内容が、面白かったり、気に入ったら、「いいね」よろしくお願いします
既存Phoenixのアンインストール
既にPhoenix 1.3以降がインストールされている場合は、まずアンインストールが必要です
mix archive.uninstall phx_new
ちなみに、アンインストールを行わずにPhoenix 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 1.4.0-rc.1のインストール
以下でPhoenix 1.4.0-rc.1がインストールできます
mix archive.install hex phx_new 1.4.0-rc.1
Phoenix 1.4.0のPJ作成、動作確認
インストール後、以下手順で、Phoenix PJを作成してください
なお、PJ名に「Web」という文字列を含むと、フォルダ作成やモジュール命名の都合から、不具合が出るため、入れないよう気を付けてください(エラーメッセージから判断付けるのは、かなり困難なので、ご注意を)
mix phx.new phx14rc1_sample --no-webpack --no-ecto
…(ファイル作成ログが続く)…
Fetch and install dependencies? [Yn] (←n、Enterを入力)
…(この後のコマンド指示が続く)…
cd phx14rc1_sample
mix deps.get
iex -S mix phx.server
ちなみにPhoenix 1.3の頃は、mix phx.newした際の以下入力で、Yを押下しても、mix deps.getが実行されない現象がありましたが、Phoenix 1.4では解決したようなので、以下手順の方が良いでしょう
mix phx.new phx14_sample --no-webpack --no-ecto
…(ファイル作成ログが続く)…
Fetch and install dependencies? [Yn] (←Y、Enterを入力)
…(mix deps.getの実行と、この後のコマンド指示が続く)…
cd phx14_sample
iex -S mix phx.server
Phoenix起動の際、以下ログが出ていれば起動成功です
…
[info] Running Phx14SampleWeb.Endpoint with cowboy 1.1.2 at http://localhost:4000
Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex>
ブラウザで「http://localhost:4000
」をアクセスすると、以下ページが表示されます
リンクとレイアウトが、Phoenix 1.3から、少し変わっていますね
Cowboy 2系に切り替える
Phoenix 1.4のデフォルトは、Cowboy 1系でdepsが設定されています
defmodule Phx14Sample.MixProject do
use Mix.Project
…
defp deps do
[
{:phoenix, "~> 1.4.0-rc"},
…
{:cowboy, "~> 1.0"}
]
end
end
Cowboy 2系に切り替えるには、手動で以下のように設定を書き換える必要があります
defmodule Phx14Sample.MixProject do
use Mix.Project
…
defp deps do
[
{:phoenix, "~> 1.4.0-rc"},
…
{:cowboy, "~> 2.5"}
]
end
end
上記でPhoenixを起動済みの場合は、Ctrl+cを2回押して、iexを抜けた後、下記でモジュールを再取得後、Phoenixを起動し直します
mix deps.get
iex -S mix phx.server
Phoenix起動の際、以下ログが出ていればOKです
…
[info] Running Phx14SampleWeb.Endpoint with cowboy 2.5.0 at http://localhost:4000
Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex>
ブラウザで「http://localhost:4000
」を見ると、Cowboy 1系と特に変化が無いため、見た目では区別できませんが、以下ページが表示できます
参考:Cowboy 2系で不具合があった場合の復旧について
Cowboy 2系に切り替えた後、不具合があって、Cowboy 1系に戻したい場合は、mix.exsのCowboyバージョンを戻した後、以下の手順で復旧できます
mix deps.update --all
iex -S mix phx.server
Phoenix起動の際、以下ログが出ていれば復旧完了です
…
[info] Running Phx14SampleWeb.Endpoint with cowboy 1.1.2 at http://localhost:4000
Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex>
参考:Phoenix 1.4で不具合があった場合の復旧について
Phoenix 1.4のインストール時、もしくはインストール後に不具合があった場合、Phoenix 1.3に戻したいと思うので、Phoenx 1.3に戻すための手順も挙げておきます
まず、不具合のあるPhoenixをアンインストールします
なお最上部が、Phoenix 1.3もしくは自前でビルドしたPhoenix、2番目以降が、Phoenix 1.4.0の各rcとなります(今後、rcのバージョンが上がるたびに、該当バージョンのアンインストールを行うようにしてください)
mix archive.uninstall phx_new
mix archive.uninstall phx_new-1.4.0-rc.0
mix archive.uninstall phx_new-1.4.0-rc.1
次に、Phoenix 1.3をインストールし直します
mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
これでPhoenix 1.3を復旧できます
注意:Phoenixのバージョンを変えても既存Phoenix PJのバージョンは変わらない
Phoenixは、起動済みのWebサーバ上で動くWebアプリケーションとは異なり、各Phoenix PJ毎にPhoenixのWebサーバ機能が搭載されたアプリケーションとして構築されるため、Phoenixをインストールし直しても、構築済みのPhoenixのバージョンは変わりません
Phoenixの実態は、該当するPhoenixバージョンのWebサーバ機能を含んだソースコードやアセットをジェネレートするアプリケーションに過ぎないのです
終わり
今回は、Phoenix 1.4.0rcのインストールとCwoboy 2系への切り替え、それらの旧バージョンへの復旧について解説しました
次回は、Phoenix 1.4.0-rcの動作確認を順々に試していきます