docker+elixir+nuxtjsでアプリを作ったときの振り返り
これは2020年5月時点でのお話。
アンブレラプロジェクトにするか迷った
APIモードで使うだけなら境界がないので今回は通常プロジェクトにした。 APIとか管理画面とか明確な境界がある場合はアンブレラが良さそう。 でも、アンブレラはErlang内部で個別にサーバーがたってプロキシとかで振り分けるような処理になるという記事があって、その分サーバー負荷が高くなるのかも?と思った。
macにElixirのバージョン管理環境を作る
https://asdf-vm.com/#/core-manage-asdf-vm
# 依存関係を入れる brew install autoconf wxmac openssl fop coreutils automake libyaml readline libxslt libtool unixodbc unzip curl # asdf入れる git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.8 git clone https://github.com/asdf-vm/asdf.git ~/.asdf cd ~/.asdf git checkout "$(git describe --abbrev=0 --tags)" echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile # echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile # これ入れたら動かなかった source ~/.bash_profile asdf plugin-add erlang asdf plugin-add elixir asdf plugin-list # 互換性確認: https://hexdocs.pm/elixir/master/compatibility-and-deprecations.html export KERL_CONFIGURE_OPTIONS="--without-javac --with-ssl=$(brew --prefix openssl)" asdf list-all erlang # めちゃ時間かかる asdf install erlang 22.3.3 asdf list erlang asdf list-all elixir asdf install elixir 1.10.2-otp-22 asdf list elixir # バージョン切り替え asdf global erlang 22.3.3 asdf global elixir 1.10.2-otp-22 asdf current cd ~ && vi .tool-versions ---- elixir 1.9.4-otp-22 erlang 22.3.4.2 ----
vscodeにelixir-ls入れる
保存したら自動フォーマットするように設定する
Credoをvscodeで使えるようにするelixirlinterを入れる
更新なく、ポップアップエラー解消しても動かない 今誰かが開発を引き継ごうとしてるみたい
DBカラムの正規化は文字列に
EctoEnumという拡張が便利そうだけどメンテナンスがあまりされてなくデプロイにバグがあるらしい。 DBのEnum型を使う方法がよく紹介されてたけど、定義が2箇所になるとの、複雑になるのでやめた。 結局、型を文字列にしてvalidate_inclusionを使う方法にした。
ユーザー認証にはPOWを使う
rails Deviseの弟分らしい https://hexdocs.pm/pow/README.html
クーロンどうする?
quantum使うと実行時間を一元管理できるっぽい?