吹くからに秋の草木のしをるればむべ山風を嵐と言ふらむ
Advent Calendar 2022 71日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
Mix.install/2のサンプル集であるmix_install_examplesからbanditを紹介します。
What's Mix.install/2 ?
Mix.install/2は、Elixir 1.12から追加されました。
Elixirでライブラリ(Hex)を追加するのは、1.11まではmix new
でプロジェクトを作らないといけないなど、ひと手間必要でした。
Mix.install/2を使うことで、ちょっとした1ファイルで収まるようなスクリプトを書く際に.exs
のみで完結できるようになりました。
具体例
具体例です。
私がよく使ういつものサンプルです。
Qiita APIを使わせていただいて、Elixir
タグがついた最新の記事を20件取得しています
Mix.install [{:req, "~> 0.2.1"}]
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
Qiitaさん、いつもありがとうございます!!!
bandit.exs
おもしろそうなサンプルってことで、今日はbanditを楽しんでみます。
What's bandit ?
Bandit is an HTTP server for Plug apps.
作者によるElixirConfの発表ビデオが公開されています。
Run
それでは、bandit.exsを動かしてみます。
以下、そのまま掲載します。
Mix.install([
{:bandit, ">= 0.0.0"}
])
defmodule Router do
use Plug.Router
plug(Plug.Logger)
plug(:match)
plug(:dispatch)
get "/" do
send_resp(conn, 200, "Hello, World!")
end
match _ do
send_resp(conn, 404, "not found")
end
end
bandit = {Bandit, plug: Router, scheme: :http, port: 4000}
require Logger
Logger.info("starting #{inspect(bandit)}")
{:ok, _} = Supervisor.start_link([bandit], strategy: :one_for_one)
# unless running from IEx, sleep idenfinitely so we can serve requests
unless IEx.started?() do
Process.sleep(:infinity)
end
実行
git clone https://github.com/wojtekmach/mix_install_examples.git
cd mix_install_examples
elixir bandit.exs
結果
ブラウザで、 http://127.0.0.1:4000/ にアクセスしてみてください。
Hello, World!
と表示されます。
ブラウザで、 http://127.0.0.1:4000/bad にアクセスしてみてください。
not found
と表示されます。
レスポンスは、404を返しています。
Wrapping up 



Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
今回は、mix_install_examplesの中から、bandit.exsをご紹介をしました。
banditを利用するとLINEアプリやSlackアプリを簡単に作れます。
開発を楽しめます。
今後も他のサンプルをご紹介していきます。
また、シンプルでいい例をおもいついたら、プルリクを送ってみるのはいいかもしれません。
私は、おもいついた場合には、プルリクを送ってみる気でいます
以上です。
I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.
We Are The Alchemists, my friends!