はじめに
-
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 ただいま開催中

