2015-07-09 11 views
5

मैं पहली बार पर्यवेक्षक को लागू करने पर काम कर रहा हूं और मैं उन मुद्दों पर चल रहा हूं जिन्हें मैं दस्तावेज़ीकरण से नहीं समझ सकता। विशेष रूप से, जब मैं SlowRamp.flood का उपयोग करके अपनी प्रक्रिया शुरू करने का प्रयास करता हूं तो मुझे {:error, {:invalid_child_spec, []}} मिलता है।Elixir: पर्यवेक्षित प्रक्रिया के लिए invalid_child_spec। यह पता नहीं लगा सकता कि

यह एक बहुत ही सरल एप्लीकेशन है और मिश्रण को नया slow_ramp --sup का उपयोग करके बनाया गया था।

मुख्य फ़ाइल ./lib/slow_ramp.ex में है:

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 

मेरे बच्चे समारोह/फ़ाइल ./lib/SlowRamp/flood.ex में है और इस तरह दिखता है:

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 

किसी भी मदद की बहुत सराहना की जाएगी। धन्यवाद!

उत्तर

3

समस्या पर

Supervisor.start_child(SlowRamp.Supervisor, []) 

आपको एक मान्य बच्चे विनिर्देश की जरूरत है, की तरह है: कारण इसकी कह रहा है कि बच्चे कल्पना अमान्य

+0

आह है Thats

def flood do import Supervisor.Spec Supervisor.start_child(SlowRamp.Supervisor, worker(SlowRamp.Flood, [], [id: :foo])) end 

, मैं गलत समझा था यह कैसे काम किया। धन्यवाद! मैं वास्तव में सहायता के लिए आभारी हूं! – kkirsche

+4

बिल्कुल सही जवाब। हम यहां एरलांग पर्यवेक्षकों पर बहुत अधिक भरोसा कर रहे हैं ... हम बेहतर त्रुटि संदेश प्राप्त कर सकते हैं और एक दिन हम करेंगे (उम्मीद है!)। –

संबंधित मुद्दे

 संबंधित मुद्दे