mix runuruchamia Twoją aplikację. Chodzi o to, że kiedy po prostu umieścisz IO.puts "something"w pliku, który wiersz jest oceniany tylko w czasie kompilacji, nic nie robi w czasie wykonywania. Jeśli chcesz, aby coś zaczęło się po uruchomieniu aplikacji, musisz to określić w pliku mix.exs.
Zwykle chcesz Applicationzacząć od najwyższego poziomu . Aby to osiągnąć, dodaj modopcję do mix.exs:
def application do
[
mod: {NewMix, []},
applications: [:logger]
]
end
A następnie w tym module musisz zaimplementować wywołanie zwrotne, które będzie wywoływane przy starcie aplikacji:
defmodule NewMix do
use Application
def start(_type, _args) do
IO.puts "starting"
end
end
startZwrotna powinna faktycznie konfiguracja procesu lub korzeń drzewa nadzór najwyższego poziomu, ale w tym przypadku będzie już widać, że jest ona wywoływana za każdym razem korzystać mix run, choć następuje błąd.
def start(_type, _args) do
IO.puts "starting"
Task.start(fn -> :timer.sleep(1000); IO.puts("done sleeping") end)
end
W tym przypadku rozpoczynamy prosty proces w naszym wywołaniu zwrotnym, który po prostu śpi na jedną sekundę, a następnie wyświetla coś - to wystarczy, aby spełnić API startwywołania zwrotnego, ale tego nie widzimy "done sleeping". Powodem tego jest to, że domyślnie mix runzakończy działanie po zakończeniu wykonywania tego wywołania zwrotnego. Aby tak się nie stało, musisz użyć mix run --no-halt- w tym przypadku maszyna wirtualna nie zostanie zatrzymana.
Innym użytecznym sposobem uruchamiania aplikacji jest iex -S mix- będzie to zachowywało się w podobny sposób, mix run --no-haltale także otwiera iexpowłokę, w której można wchodzić w interakcje z kodem i uruchomioną aplikacją.
.exsplik), ale zrób to w kontekście swojej aplikacji do miksowania, możesz uruchomićmix run <script>. Zobacz,mix help runaby uzyskać więcej informacji.