LoginSignup
6
0

More than 3 years have passed since last update.

Elixir の Getting Started に PR してみる

Posted at

Elixir の Getting Started に PR してみる

この記事に必要な範囲で自己紹介すると、

  • 最近 Elixir の勉強をしている

です。

Elixir の Getting Started

公式サイトにある初心者学習用のページです。最近、ここに書いてあるコードを IElixir で試しながら読み進めています。

Module attributes - Elixir のページにある下記のコードの実行に失敗したことが、PR を出そうと思ったきっかけです。

defmodule MyPlug do
  use Plug.Builder

  plug :set_header
  plug :send_ok

  def set_header(conn, _opts) do
    put_resp_header(conn, "x-header", "set")
  end

  def send_ok(conn, _opts) do
    send(conn, 200, "ok")
  end
end

IO.puts "Running MyPlug with Cowboy on http://localhost:4000"
Plug.Adapters.Cowboy.http MyPlug, []

IElixir で hex package を使う

話が脱線しますが、IElixir で Hex package を使うときの方法を紹介しておきたいと思います。

IElixir では Boyle というモジュールを使って環境の管理ができます。例えば、ノートブックの最初のセルを以下のようにしておけば、plug_cowboy のインストールされている getting_started という名前の環境で作業をすることができます。ちなみに、plug_cowboyPlug.Adapters.Cowboy を使うために必要な package です。

defmodule Environment do
  @env_name "getting_started"

  def prepare() do
    unless confirm_env(Boyle.list()) |> is_nil() do
      Boyle.install({:plug_cowboy, "~> 2.0"})
    end
  end

  defp confirm_env({:ok, env_list} = _boyle_list) do
    unless @env_name in env_list do
      Boyle.mk(@env_name)
    end
    Boyle.activate(@env_name)
  end
  defp confirm_env(_), do: nil
end

Environment.prepare()
Boyle.active_env_name()

コードの修正

Getting Started のコードの話に戻ります。ちゃんと依存 package を導入して実行してみたのですが、下記のエラーが出てしまいました。

** (CompileError) console:12 "undefined function send/3"

実は Plug.Builder には send/3 なんて関数は存在しません。ドキュメントで検索すると分かりますが、今回の用途では send_resp/3 を使います。

エラーを見ればすぐに分かることですが、無駄な時間の削減に少しだけ貢献できそうなので、修正の PR を出すことにしました。

Elixir の公式ページのソースは elixir-lang/elixir-lang.github.com にあるので、これをクローンして PR を出せば良さそうです。

PR link: https://github.com/elixir-lang/elixir-lang.github.com/pull/1293

その結果、速攻でマージしていただきました。しかも Elixir の creator である José Valim さんから素敵なコメント付きで!

おわりに

ドキュメントのソースが GitHub で公開されている場合は、ドキュメント間違ってんな、で終わらせずに、積極的に PR していきたいと思います!

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0