tech::hexagram

personal note for technical issue.

Elixir

EExでタグをエスケープする場合には%を重ねる

koseki.hatenablog.com こちらを見てピンときたので、Elixirの EEx でも確認した所同様にできるのでメモ。 foo <%= bar %> 例えば、これをそのまま出力したい場合。 iex(1)> EEx.eval_string("foo <%%= bar %>") "foo <%= bar %>" iex(2)> EEx.eval_string("…

初めてOSSにコミットした話

mariaex というElixirのMySQLライブラリにPull Requestを送って、無事に3日前にmergeされた。初めてのOSS貢献で感慨深かったので記事に書いておこうと思う。 github.com (※@hashijun は会社用のGithubアカウント) きっかけ 今年の2月頃、業務中にとあるDB…

distilleryを利用したリリースビルドから、command経由でmoduleを実行する際のハマりどころ

2点ハマりどころがあったのでまとめておく。 リリースビルドに含まれないmoduleを実行していないか /path/to/bin$ ./some command Elixir.Some.Module run ... {"init terminating in do_boot",{undef,[{'Elixir.Some.Module',application,[],[]},...,{line,…

Exqのenqueueのプロセスを追ってみた

仕事に必要だったのでメモ書き程度に残しておく。 Exq というRedisを利用したJob queueライブラリのコードリーディング。 Exq.enqueue/4 : use Exq.Enqueuer.EnqueueApi とあるので、その中に実体がある。 # Exq.Enqueuer.EnqueueApi def enqueue(pid, queue…

任意で渡ってきた変数が特定のStructかどうか判定する方法

is_struct みたいな便利メソッドがないようなので以下のように判定する必要があった。 割と面倒だったのでまとめておく。 例として、任意で受け取った引数 args が User のStructかどうかを判定する。 StructはMapの拡張になっている まずStructは Mapを拡張…

PhoenixのテンプレートではMap |> Enum.eachでイテレートを回した中身が表示されない

ERBと同じように書こうとしたら詰まったのでメモ。 簡単な例で書いてみる。 Ruby @grouped_users = User.all.group_by(&:group) とcontrollerで定義しておくと、erbだと以下のようにループを回せる。 <% @grouped_users.each do |group, users| %> <% users…