はじめに
- Elixir楽しんでいますか
- 本記事は2021/08/28(土)から開催中の純粋なもくもく会autoracex #43の成果です
-
@yamaneko717 さんの「Phoenixのwebsocket部分のみ使いたい」にあげられている疑問に回答してみようとおもいます
- ちょうど最近、私自身が使ったオプションがありましたので、アウトプットしておこうとおもいます
- もとの記事ではphx.newタスクのオプションについての疑問を挙げられています
-
mix help phx.new
でオプションを確認できます Phoenix v1.5.12
Phoenixのwebsocket部分のみ使いたい
- こちらの記事で挙げられている疑問点にお答えしていきます
--umbrella
どういうこと??よくわからん。一つのプロジェクト内に複数アプリ作るってことぉ??
- あっています。
- Elixir SchoolのUmbrella Projectsがわかりやすいとおもいます
--app
OTPアプリケーションって何?w
ググったらワンタイムパスワードとかでてきたけどw
だれか教えてください。
- Open Telecom Platformの略です
-
Introduction to Mixには以下の説明がかいてあります
- OTP (Open Telecom Platform) is a set of libraries that ships with Erlang. Erlang developers use OTP to build robust, fault-tolerant applications. In this chapter we will explore how many aspects from OTP integrate with Elixir, including supervision trees, event managers and more;
- 参考: 16. OTPとは何か?
例
$ mix phx.new hoge --app fuga
- のようにPhoenixプロジェクトをつくると、
config/config.exs
内のOTPアプリケーション名が:fuga
になります- 逆に
--app fuga
を指定しない場合には、:hoge
になります
- 逆に
-
lib/fuga.ex
やlib/fuga_web.ex
が生成されていて、モジュール名がFuga
、FugaWeb
になっています- 逆に
--app fuga
を指定しない場合には、lib/hoge.ex
やlib/hoge_web.ex
が生成されていて、モジュール名がHoge
、HogeWeb
になっています
- 逆に
--module
Google翻訳 -> 「生成されたスケルトンの基本モジュールの名前」
ちょっとなにいってるかわからない。
例
$ mix phx.new hoge --module Fuga
- のようにPhoenixプロジェクトをつくると、
lib/hoge.ex
やlib/hoge_web.ex
のモジュール名がFuga
やFugaWeb
になっています- 逆に
--module Fuga
を指定しない場合には、Hoge
やHogeWeb
になります
- 逆に
さらに例
- 私は以下の場面で、
--app
、--module
を指定したことがあります - 手前味噌の「Phoenixの開発環境をつくる(Elixir)」にして環境構築した場合に、
.devcontainer
と同じ階層にPhoenixプロジェクトの関連フォルダやファイルを置きたかったのです - どういうことなのか説明を続けます
- 初期状態はこんな感じです
/workspace
├── .devcontainer
│ ├── Dockerfile
│ ├── devcontainer.json
│ └── docker-compose.yml
- こんな構成になっていて、
workspace
の直下にPhoenixのwebsocket部分のみ使いたいのフォルダやプロジェクトを作りたいとします
% pwd
workspace
% mix phx.new .
- と実行すると、OTPアプリ名が
:workspace
になって、Workspace
モジュールやWorkspaceWeb
モジュールがつくられます - それが嫌だとして例えば、OTPアプリ名を
:hacobune_phx
に、HacobunePhx
モジュールやHacobunePhxWeb
モジュールを作りたいとします
% mix phx.new . --module HacobunePhx --app hacobune_phx
- こんな感じで実行することで以下のようなプロジェクトができあがりました
/workspace
├── .devcontainer
│ ├── Dockerfile
│ ├── devcontainer.json
│ └── docker-compose.yml
├── README.md
├── assets
│ ├── css
├── config
│ ├── config.exs
│ ├── dev.exs
│ ├── prod.exs
│ ├── prod.secret.exs
│ └── test.exs
├── lib
│ ├── hacobune_phx
│ ├── hacobune_phx.ex
│ ├── hacobune_phx_web
│ └── hacobune_phx_web.ex
├── mix.exs
├── priv
└── test
--verbose
なにこれw
デバッグに使えるの?
- はじめて使ってみました
- ソースコードはこのへんのようです
- つけたときとつけなかったときの違いがいまいちつかめませんでしたが、ご推察の通り、トラブルシュートやphx.newタスクそのものの開発でデバッグに使うのだとおもいます
Wrapping Up
- Enjoy Elixir
-
mix phx.new . --module HacobunePhx --app hacobune_phx
の話を書こう書こうとおもっていて書いていなかったので疑問に答える形で書くことができてよかったです - Elixirの純粋なもくもく会 autoracex #43 ただいま開催中