日本時間の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オプションについて
きっかけはこれ。
Phoenixのv1.5.0-rcとv.1.4.16のドキュメントを比較すると、v1.5.0-rcのオプションには「--live」と「--no-dashboard」が追加されている。
— みずりゅ(技術書典応援祭で「Elixirへのいざない2」頒布中:しがないラジオsp65出演) (@MzRyuKa) 2020年4月16日
v1.5では、Phoenix LiveViewとDashboardがデフォで追加されるってことかな?https://t.co/ACIYxQK6Op
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
端的にいえば、--no-dashboard
を指定すれば、LiveDashboardは組み込まれない。ということは、LiveDashboardはデフォルトで組み込まれるってことのようです。
また、--live
を指定すれば、Phoenix LiveViewが使えるように設定してくれるようです。
LiveDashboardの確認
Phoenix v1.5.0-rc.0のmix phx.new
で、デフォルトでLiveDashboardが利用できるか確認してみます。
--no-dashboard
を指定しない場合
Twitterでも呟いたのですが、特に何もしなくてもLiveDashboardが利用できます。
#elixir #Phoenix
— みずりゅ(技術書典応援祭で「Elixirへのいざない2」頒布中:しがないラジオsp65出演) (@MzRyuKa) 2020年4月18日
Phoenix1.5.0-rcでプロジェクトを作成すると、デフォルトで「phoenix_live_dashboard」がインストールされています。(正確にはmix.exsに設定されている)
そして、設定などを追加しなくても、「/dashboard」にアクセスすればLiveDashboardの画面が表示されました。 pic.twitter.com/WJeKDDr8A9
モジュールを設定する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さんがファイル/ディレクトリベースで確認してくださっています。
Phoenix 1.5の「--live」オプション有PJと無PJのファイル差異はこんな感じ💁♂️ #ElixirDI #kokuraex #fukuokaex
— piacere @fukuoka.ex(love Elixir&Gravity extremely) (@piacere_ex) 2020年4月18日
LiveView設定差は、「*_web.ex」「package.json」「mix.exs」のLiveView指定分なので、「--live」未指定時でも、LiveViewはすぐ使えそで良さげ(なお_build、deps、node_modulesは除外済)😆 pic.twitter.com/MkITcAJvWZ
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.
まとめ
Phoenixフレームワークのv1.5.0-rc.0について調べてみました。
デフォルトでLiveDashboardを利用できたり、オプション指定でLiveViewが使えるようになるのは、かなり好印象。
Phoenixの1.4.x から 1.5.0-rcのアップグレード方法も提供されていました。 gist.github.com