Ich arbeite an der Implementierung eines Supervisors zum ersten Mal und ich stoße auf Probleme, die ich nicht aus der Dokumentation herausfinden kann. Insbesondere wenn ich versuche, meinen Prozess mit SlowRamp.flood
zu starten, erhalte ich {:error, {:invalid_child_spec, []}}
.Elixier: invalid_child_spec für überwachten Prozess. Kann nicht herausfinden, warum
Dies ist eine sehr einfache Anwendung und wurde mit Mix new slow_ramp --sup gemacht.
Die Hauptdatei in ./lib/slow_ramp.ex
ist:
defmodule SlowRamp do
use Application
# See http://elixir-lang.org/docs/stable/elixir/Application.html
# for more information on OTP Applications
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
worker(SlowRamp.Flood, [])
]
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
# for other strategies and supported options
opts = [strategy: :one_for_one, name: SlowRamp.Supervisor]
Supervisor.start_link(children, opts)
end
def flood do
Supervisor.start_child(SlowRamp.Supervisor, [])
end
end
Mein Kind Funktion/Datei in ./lib/SlowRamp/flood.ex
ist und sieht wie folgt aus:
defmodule SlowRamp.Flood do
def start_link do
Task.start_link(fn -> start end)
end
defp start do
receive do
{:start, host, caller} ->
send caller, System.cmd("cmd", ["opt"])
end
end
end
Jede Hilfe sehr geschätzt würde. Vielen Dank!
Ah ungültig ist, hatte ich das falsch verstanden wie das funktioniert hat. Vielen Dank! Ich schätze die Hilfe sehr! – kkirsche
Perfekte Antwort. Wir verlassen uns zu sehr auf Erlang Supervisors ... wir könnten bessere Fehlermeldungen haben und eines Tages werden wir (hoffentlich!). –