ヽ(´・肉・`)ノログ

How do we fighting without fighting?

Elixir で OTP の Application を開始する

Building OTP apps with Mix を参考にしている.

今回は 2.4 Starting applications のあたり.

アプリケーションを始める

定義しただけのアプリケーションなのに,開始しなくても使える. それは Mix が全てのアプリケーションの開始と依存の解決をデフォルトで行なってくれるためだ. OTP が提供している :application モジュールの関数を呼ぶことで手動でアプリケーションを開始できる.

iex> :application.start(:stacker)
{ :error, { :already_started, :stacker } }

ここではアプリケーションは既に開始しているので,エラーメッセージが返る.

Mix はあなたのアプリケーションだけでなく,依存しているアプリケーションも開始する. プロジェクトの依存 ( 前の章で書いた, deps キーで定義したもの ) とアプリケーションの依存は異なることに注意.

プロジェクトの依存は,テストフレームワークやコンパイル時にのみ必要な依存も含められる. アプリケーションの依存は,実行時に必要な全てのものになる. アプリケーションの依存はどれも明示的に application 関数に追加しなければならない.

def application do
  [ registered: [:stacker],
    applications: [:some_dep],
    mod: { Stacker, [:hello] } ]
end

Mix 上で task が動作するとき, アプリケーションとアプリケーションが依存しているものが起動することを保証する.

このエントリーをはてなブックマークに追加