週刊Elixirライブラリ2015-2

Elixirのライブラリの解説を週ごとにお届けする記事です。
解説が間違っていた場合には、コメントか@hayabusa333にご連絡くださると嬉しいです。

今週はPlugについて

# Plug is 何?
1. Webアプリケーション間での構成可能なモジュールの仕様
2. ErlangVM内で動いているWebサーバーの接続アダプタ

# インストール方法
# mix new にてプロジェクト作成に必要となる基本セットを作成し、
# mix.exs を変更する
$ mix new my_plug
$ cd my_plug
$ vim mix.exs

# plugを使用するためにインストールするバージョンを記載
# plugにて接続するwebサーバとしてCowboyもインストールするために記載
def deps do
 [{:cowboy, "~> 1.0.0"},
 {:plug, "~> 0.12"}]
end

# アプリケーションにてcowboyとplugを使うように指定
def application do
 [applications: [:cowboy, :plug]]
end

# cowboy plugをインストール
$ mix deps.get

lib/my_plug.ex にてテスト用のアプリケーションを記載
$ vim lib/my_plug

defmodule MyPlug do
 import Plug.Conn

 def init(options) do
  # initialize options

  options
 end

 # 呼び出し処理があった場合に、ステータスコード200
 # Hellorworldを画面に表示することを記載
 def call(conn, _opts) do
  conn
  |> put_resp_content_type("text/plain")
  |> send_resp(200, "Hello world")
 end
end

# plugを使ってCowboyと接続するむねを記載
Plug.Adapters.Cowboy.http MyPlug, []

# コンパイルを実施
$ iex -S mix
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Could not find rebar, which is needed to build dependency :ranch
I can install a local copy which is just used by mix
Shall I install rebar? [Yn] y

# 記載した my_plug を実行する
mix run --no-halt lib/my_plug.ex

# 実行が http://localhost:4000 にアクセスし、Helloworldが表示されることを確認する

以上となります。

今回のコードはPlugとcowboyの接続のみのコードとなり、最小限のコードとなります。
実際にはplugには多くのメソッドなどがありますので、ルーティングなど最低限使用する部分は
そのうち説明できれば良いなっと思います。

それでは皆様、良いElixirライフを