Skip to content

Latest commit

 

History

History
67 lines (51 loc) · 2.29 KB

18.3.md

File metadata and controls

67 lines (51 loc) · 2.29 KB

18.3 SequenceプログラムをOTPアプリケーションにする

mix.ex について
application関数で以下を指定する

  • トップレベルモジュール
    start関数が実装されているモジュール
  • start関数に渡す引数
goh@goh% iex -S mix
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]

Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
> Sequence2.Server.next_number
456

mod オプション
以下を指定する

  • エントリポイントであるモジュール
  • start関数に渡す引数

registered オプション
アプリケーションが登録する予定の名前のリストを指定する 指定された名前はユニークであることが保証される

goh@goh% mix compile
Compiling 6 files (.ex)
warning: function init/1 required by behaviour GenServer is not implemented (in module Sequence2.Stash).

We will inject a default implementation for now:

    def init(args) do
      {:ok, args}
    end

You can copy the implementation above or define your own that converts the arguments given to GenServer.start_link/3 to the server state.

  lib/sequence2/stash.ex:1

Generated sequence2 app

コンパイルして生成された _build ディレクトリは、ErlangのOTPと互換性がある sequence2.app には、アプリケーションを定義する情報が定義される 一部は mix.exs から来ている

{application,sequence2,
             [{applications,[kernel,stdlib,elixir,logger]},
              {description,"sequence2"},
              {modules,['Elixir.Sequence2','Elixir.Sequence2.Application',
                        'Elixir.Sequence2.Server','Elixir.Sequence2.Stash',
                        'Elixir.Sequence2.SubSupervisor',
                        'Elixir.Sequence2.Supervisor']},
              {vsn,"0.1.0"},
              {mod,{'Elixir.Sequence2.Application',456}},
              {registered,['Elixir.Sequence2.Server']}]}.

アプリケーションパラメータについてさらに

env オプション
アプリケーションに渡すキーワードリストを指定できる Application.get_env(アプリケーション名, 環境パラメータ名) で参照する