とある件でPhoenixでwebsocket部分のみ使いたいことがあったのでPhoenixプロジェクトの新規立ち上げ時に変更できる設定についてここに書こうと思います。僕自身がほとんど触れていない機能とかもあるので間違ってたらごめんなさい。
mix tasks
Phoenix公式のガイドにもあるように通常は下記のコマンドを実行して新規プロジェクトを作成します。
mix phx.new app_name
これを実行するとcontrollerとかデータベースあたりのコードとかいろいろたくさん生成されます。普通にアプリを作る場合はそれでいいのですが今回はwebsocketで使いたいだけなので極端な話channel以外いらないです。しかしありがたいことにオプションがありそこでいろいろいじれます。
options
公式ドキュメントのmix phx.new optionsの部分になります。
ぶっちゃけ公式ドキュメントを日本語に翻訳するだけになっちゃいますがオプションはこのようになってます。
--live
これはPhoenixのLiveViewの機能を使うときの設定みたいです。僕自身LiveViewを使ったことがないのであまり詳しいことはわからないです。
--umbrella
どういうこと??よくわからん。一つのプロジェクト内に複数アプリ作るってことぉ??
--app
OTPアプリケーションって何?w
ググったらワンタイムパスワードとかでてきたけどw
だれか教えてください。
--module
Google翻訳 -> 「生成されたスケルトンの基本モジュールの名前」
ちょっとなにいってるかわからない。
--database
使うデータベースを選ぶことでそれに合わせたアダプタになります。デフォルトはpostgreSQLだったはず。mySQLとか使いたいときはこのオプション入れたほうがいいです。あとから変更するのめんどくさいです。
--no-webpack
mix phx.newを実行したら一緒にjs周りもセッティングしてくれるのですがそのへんをやらないようにするやつです。フロント部分は別にするときやapiサーバとして実装するときはjsとかいらないのでこのオプション使うかもー(アル中カラカラ風)
--no-ecto
ectoについてはここでは説明しませんがまあそのまんまの意味でectoを作らないっていうオプションです。
軽く触れておくと基本的にPhoenixはectoを通してDBに接続するのでこのオプションを設定するとDB使えません。DB接続しないときの設定です。
--no-html
これももうそのまんまです。html生成しないようにするやつです。
--no-gettext
gettextはなんか多言語対応するときに使うらしい。僕自身は多言語対応しないといけない場面に今のところでくわしたことないのであんまわからないです。
--no-dashboard
デフォルトの場合だとダッシュボードのページが生成されるのですがそれを生成させないオプションです。個人的にはいらないことのほうが多い気がする。
--binary-id
これはecto内の設定ですね。主キーにバイナリーIDを使うかどうかの設定。使ったことないから詳しいことは知らないです。
--verbose
なにこれw
デバッグに使えるの?
さいごに
ほとんど使ったことない機能であんまかけることなかったです。すみません。
今現在僕がよくわかってない部分もけっこうありますがわかり次第追記しようとは今のところ思ってます(思ってるだけ)。なのでこんなことができるんやなあ程度に流してもらえると助かります。
つたないしょうもない文章を最後まで読んでいただきありがとうございます。。
追記
@torifukukaiouさんが「phx.newのオプションの疑問点について答えてみます (Elixir/Phoenix)」でこの記事に回答する形で記事を書いてくださいました。ぼくのおふざけまじりな記事がお恥ずかしいですが有難うございます!!
オプションについて知りたい方は@torifukukaiouさんの記事も読むことをおすすめします。