Elixir, Phoenix, Fly.io 等のメモ
Phoenix 関係でメモを残す
heex と ~H シジルのフォーマッターがある。
VSCode で開発している場合、拡張機能 JakeBecker.elixir-ls
でフォーマットしてくれる。
CI で dialyzer を実行するとき、キャッシュを入れると早くなるらしい。
gitlab-ci でキャッシュを入れる場合、key はどうすればいいんだ?
イメージ名を key にするのはできないっぽい。
イメージ名を key に使うアイデアは否決されたらしい。
Phoenix アプリを fly.io にデプロイする場合、config/prod.exs に db名は指定する必要がある。
config :hunt_cutdown, MyApp.Repo, database: "myapp_db"
GitLab CI は無料だと 400 分/月 までしか使えない。
追加購入は $10 で 1000 分。
テストと dialyzer だけで13分とかかけているので、何とかしないといけない。
GitLab.jp のページだと、古い 2000 分/月の表記になっている?
GitHub は 2000 分/月 で強い。
ローカルPCを Runner としてつかえないだろうか?
Circle CI を試したが、Deploy Key を追加できない。
CORS で何かが引っ掛かっている?
なぜか my_app/lib/my_app_web/templates/layout/live.html.heex
をフォーマットすると、アラートの枠が表示される。
pタグの中に改行・空白があると枠が出てくるらしい。
tailwind css, daisyUI を入れたのが悪さしているかも?
フォーマット前
<main class="container">
<p class="alert alert-info" role="alert"
phx-click="lv:clear-flash"
phx-value-key="info"><%= live_flash(@flash, :info) %></p>
<p class="alert alert-danger" role="alert"
phx-click="lv:clear-flash"
phx-value-key="error"><%= live_flash(@flash, :error) %></p>
<%= @inner_content %>
</main>
フォーマット後
<main class="container">
<p class="alert alert-info" role="alert" phx-click="lv:clear-flash" phx-value-key="info">
<%= live_flash(@flash, :info) %>
</p>
<p class="alert alert-danger" role="alert" phx-click="lv:clear-flash" phx-value-key="error">
<%= live_flash(@flash, :error) %>
</p>
<%= @inner_content %>
</main>
出てくるアラートの枠
my_app/.formatter.exs
を編集して、対象のファイルをフォーマットしないようにしておく。
[
import_deps: [:ecto, :phoenix],
plugins: [Phoenix.LiveView.HTMLFormatter],
# inputs: ["*.{ex,exs}", "priv/*/seeds.exs", "{config,lib,test}/**/*.{heex,ex,exs}"],
inputs: ["*.{ex,exs}", "priv/*/seeds.exs", "{config,lib,test}/**/*^(live.html).{heex,ex,exs}"],
subdirectories: ["priv/*/migrations"]
]
phoenix では、主キーは自動生成させる思想らしい。こういう主キーをサロゲートキーと呼ぶ。