Mix 構成ファイルがないことを無視して、次のように記述します。
defmodule Test.Supervisor do
use Supervisor
def start_link do
#"name:" will show up in :observer...
Supervisor.start_link(__MODULE__, [], [name: :"root_supervisor"])
end
def init(args) do
children = [
worker(Test.Method, [], [function: :start, id: "my_root_process"]),
]
supervise(children, [strategy: :one_for_one, name: :root])
end
end
defmodule Test do
def start(_type, _args) do
Test.Supervisor.start_link()
end
end
defmodule Test.Method do
def start do
IO.puts("Expect to see me often... #{self}")
end
end
アプリケーションを再起動せずに最初の実行 (iex -S mix) の後にクラッシュします。エラーメッセージは次のとおりです。
=INFO REPORT==== 14-Jan-2016::22:34:04 ===
application: logger
exited: stopped
type: temporary
** (Mix) Could not start application mememe: Test.start(:normal, {}) returned
an error: shutdown: failed to start child: "my_root_process"
** (EXIT) :ok
ただし、次のように直接Test.start()
呼び出すように変更した場合:Test.Method.start()
defmodule Test do
def start(_type, _args) do
Test.Method.start()
end
end
その後、正常に実行されますが、コードは監視されません。ここでの実装または理解のいずれかで基本的な間違いを犯していると確信していますが、その間違いは正確には何ですか?