とんたんの技術メモ

注)ただのメモです。

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使うと実行時間を一元管理できるっぽい?