mix run
अपना ऐप चलाता है। यह सिर्फ इतना है कि जब आप बस IO.puts "something"
एक फ़ाइल में डालते हैं तो उस लाइन का केवल संकलन-समय में मूल्यांकन किया जाता है, यह रनटाइम पर कुछ भी नहीं करता है। यदि आप कुछ शुरू करना चाहते हैं, जब आप अपना ऐप शुरू करते हैं तो आपको यह निर्दिष्ट करने की आवश्यकता होती है कि आपके में mix.exs
।
आमतौर पर आप एक शीर्ष-स्तर चाहते हैं जो Application
शुरू हो जाएगा। इसे प्राप्त mod
करने के लिए अपने लिए एक विकल्प जोड़ें mix.exs
:
def application do
[
mod: {NewMix, []},
applications: [:logger]
]
end
और फिर उस मॉड्यूल में आपको एक कॉलबैक लागू करने की आवश्यकता होती है जिसे एप्लिकेशन प्रारंभ पर बुलाया जाएगा:
defmodule NewMix do
use Application
def start(_type, _args) do
IO.puts "starting"
end
end
start
कॉलबैक वास्तव में अपने उच्च-स्तरीय प्रक्रिया या पर्यवेक्षण पेड़ जड़ सेटअप लेकिन इस मामले में आप पहले से ही देखेंगे चाहिए कि यह हर बार जब आप का उपयोग कहा जाता है mix run
, हालांकि एक त्रुटि हुई।
def start(_type, _args) do
IO.puts "starting"
Task.start(fn -> :timer.sleep(1000); IO.puts("done sleeping") end)
end
इस मामले में हम अपने कॉलबैक में एक सरल प्रक्रिया शुरू कर रहे हैं जो सिर्फ एक सेकंड के लिए सोती है और फिर कुछ आउटपुट करती है - यह start
कॉलबैक के एपीआई को संतुष्ट करने के लिए पर्याप्त है लेकिन हम नहीं देखते हैं "done sleeping"
। इसका कारण यह है कि डिफ़ॉल्ट रूप mix run
से एक बार बाहर निकल जाएगा जब कॉलबैक ने निष्पादन समाप्त कर दिया है। ऐसा नहीं होने के लिए आपको उपयोग करने की आवश्यकता नहीं है mix run --no-halt
- इस मामले में वीएम को रोका नहीं जाएगा।
अपना आवेदन शुरू करने का एक और उपयोगी तरीका है iex -S mix
- यह एक समान तरीके से व्यवहार करेगा, mix run --no-halt
लेकिन एक iex
खोल भी खोल सकता है जहां आप अपने कोड और अपने चल रहे एप्लिकेशन के साथ बातचीत कर सकते हैं।
.exs
फ़ाइल) चलाना चाहते हैं, लेकिन अपने मिक्स ऐप के संदर्भ में ऐसा करें, तो आप चला सकते हैंmix run <script>
।mix help run
अधिक जानकारी के लिए देखें ।