LoginSignup
8
3

More than 5 years have passed since last update.

Phoenix 1.4rcを試す② インストール編(不具合時の復旧もあるよ)

Last updated at Posted at 2018-10-15

fukuoka.ex代表のpiacereです
ご覧いただいて、ありがとうございます:bow:

革新的なアップデートてんこ盛りのPhoenix 1.4.0-rc.xを数回に分けて試す連載です

早くもrc.1が出たので、今回からrc.1にスイッチして進めます

前回までの記事は、以下になります
 |> Phoenix 1.4rcを試す① アップデート紹介編

今回は、Phoenix 1.4.0-rc.1をインストールして、動かしてみます

なお、Phoenixは、ElixirのWebフレームワークです

内容が、面白かったり、気に入ったら、「いいね」よろしくお願いします :wink:

既存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」をアクセスすると、以下ページが表示されます

image.png

リンクとレイアウトが、Phoenix 1.3から、少し変わっていますね

Cowboy 2系に切り替える

Phoenix 1.4のデフォルトは、Cowboy 1系でdepsが設定されています

mix.exs ※デフォルト
defmodule Phx14Sample.MixProject do
  use Mix.Project
  
  defp deps do
    [
      {:phoenix, "~> 1.4.0-rc"},
      
      {:cowboy, "~> 1.0"}
    ]
  end
end

Cowboy 2系に切り替えるには、手動で以下のように設定を書き換える必要があります

mix.exs ※Cowboy2系に切り替えた後
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系と特に変化が無いため、見た目では区別できませんが、以下ページが表示できます

image.png

参考: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の動作確認を順々に試していきます

p.s.「いいね」よろしくお願いします

よろしければ、ページ左上の image.pngimage.png のクリックをお願いしますー:bow:

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3