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オプションについて
きっかけはこれ。
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






