みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

Phoenixフレームワークのv1.5.0-rc.0を試す

日本時間の2020年4月17日5時34分に、Phoenixフレームワークのv1.5.0-rc.0がリリースされています。

https://github.com/phoenixframework/phoenix/releases/tag/v1.5.0-rc.0

ドキュメントをざっと読んでいた際に、mix phx.newのオプションに--live--no-dashboardが追加されていました。 これらについてちょっと確認してみたので、備忘のため記述しときます。

なお、本記事は先日書いた記事「Phoenix LiveDashboardのv.0.1.0がリリースされました」の続きです。 mzryuka.hatenablog.jp

mix phx.newオプションについて

きっかけはこれ。

v1.5.0-rc.0のドキュメント(hexdocs)の「Options」に、以下の記述があります。

  • --no-dashboard - do not include Phoenix.LiveDashboard
  • --live - include Phoenix.LiveView to make it easier than ever to build interactive, real-time applications

hexdocs.pm

端的にいえば、--no-dashboardを指定すれば、LiveDashboardは組み込まれない。ということは、LiveDashboardはデフォルトで組み込まれるってことのようです。

また、--liveを指定すれば、Phoenix LiveViewが使えるように設定してくれるようです。

LiveDashboardの確認

Phoenix v1.5.0-rc.0のmix phx.newで、デフォルトでLiveDashboardが利用できるか確認してみます。

--no-dashboardを指定しない場合

Twitterでも呟いたのですが、特に何もしなくてもLiveDashboardが利用できます。

モジュールを設定するmix.exsを確認すると、以下のようにLiveDashboardの設定({:phoenix_live_dashboard, "~> 0.1.0"},)が記述されています。

  defp deps do
    [
      {:phoenix, "~> 1.5.0-rc.0", override: true},
      {:phoenix_html, "~> 2.11"},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:phoenix_live_dashboard, "~> 0.1.0"},
      {:telemetry_metrics, "~> 0.4"},
      {:telemetry_poller, "~> 0.4"},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.0"},
      {:plug_cowboy, "~> 2.0"}
    ]
  end

「/」で表示されるのTOPページには、LiveDashboardへのリンクも存在します。

LiveDashboardの画面も、「Home」「Metrics」「Processes」と情報が表示されていました。 なお、「Request logging」は情報が出ていなかったので画面は省略。

--no-dashboardを指定した場合

オプションで--no-dashboardを指定してmix phx.newを行うと、LiveDashboardの設定は入っていません。

mix.exsも、上記とは異なり{:phoenix_live_dashboard, "~> 0.1.0"},がありません。

  defp deps do
    [
      {:phoenix, "~> 1.5.0-rc.0", override: true},
      {:phoenix_html, "~> 2.11"},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:telemetry_metrics, "~> 0.4"},
      {:telemetry_poller, "~> 0.4"},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.0"},
      {:plug_cowboy, "~> 2.0"}
    ]
  end

また、TOP画面にLiveDashboardのリンクもありません。

LiveViewの確認

--liveを指定してmix phx.newを実行すると、LiveViewの設定がされています。

加えて、TOP画面にLiveVIewで動く機能が設定されています。

これは、Phoenix 1.4.x系でPhoenix LiveViewの設定を手動で実施してきた人達には朗報だと思います。 Phoenix LiveViewはバージョンが上がるごとに、破壊的更新で細かい設定の変更や関数修正が発生していたので、その手間が省けるのは嬉しいかも。

mix.exsには{:phoenix_live_view, "~> 0.12.0"},が設定されています。

ちなみに、--liveオプションにはバージョン指定がないので、phoenix_live_viewの最新が設定されていくと思います。

  defp deps do
    [
      {:phoenix, "~> 1.5.0-rc.0", override: true},
      {:phoenix_live_view, "~> 0.12.0"},
      {:floki, ">= 0.0.0", only: :test},
      {:phoenix_html, "~> 2.11"},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:phoenix_live_dashboard, "~> 0.1.0"},
      {:telemetry_metrics, "~> 0.4"},
      {:telemetry_poller, "~> 0.4"},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.0"},
      {:plug_cowboy, "~> 2.0"}
    ]
  end

テキストボックスが追加されているTOP画面。

LiveViewの機能で画面が作られています。

ちなみに、--liveオプション有PJと無PJのファイル差異については、@piacere_exさんがファイル/ディレクトリベースで確認してくださっています。

signing_saltのソルト文字について

Phoenix LiveViewの設定で1つだけ気になった点がありました。

それは、signing_saltのソルト文字が32文字でなかったこと。Phoenixプロジェクト作成後の「endpoint.ex」では、以下の設定値でした。(「signing_salt」は適当な値に修正しています。)

  @session_options [
    store: :cookie,
    key: "_hiyoko_key",
    signing_salt: "VXXXXXXX"
  ]

これまで(Phoenix v1.4系)のPhoenix LiveViewのドキュメントでは、ソルト文字数は32文字で言われていました。 確認したところ、Phoenix v1.5系に対応したPhoenix LiveViewのドキュメントでも、以下のように「mix phx.gen.secret 32した値で更新しろ」と書いてあります。 なので、この部分については、手動での修正が必要になります。

Once installed, update your endpoint's configuration to include a signing salt. 
You can generate a signing salt by running mix phx.gen.secret 32. 

hexdocs.pm

まとめ

Phoenixフレームワークのv1.5.0-rc.0について調べてみました。

デフォルトでLiveDashboardを利用できたり、オプション指定でLiveViewが使えるようになるのは、かなり好印象。

Phoenixの1.4.x から 1.5.0-rcのアップグレード方法も提供されていました。 gist.github.com