2016-10-03 1 views
0

Lors du démarrage d'une application, la valeur de retour doit être un pid ou une erreur.Utilisation des applications elixir pour les programmes qui s'exécutent une seule fois

Est-il possible d'utiliser des applications pour des programmes qui ne sont exécutés qu'une fois par le biais du traitement. Quelque chose comme.

defmodule MyApp do 
    use Application 

    def start(_type, _args) do 
    # Do stuff 
    {:done, :normal} 
    end 
end 
+0

Les applications sont pour les longs programmes en cours d'exécution qui doivent être robustes ... Si cela doit être considéré comme unique, comme par exemple un script de console, pourquoi ne le modéliseriez-vous pas en tant que script (.exs?). Et si cela doit être robuste, pourquoi le modèle d'Application vous dérange-t-il? – bottlenecked

+0

Pourquoi avez-vous besoin d'une application OTP pour cela? – mudasobwa

+0

Donc, la réponse est de ne pas utiliser une application et de faire un escript? Je ne suis pas vraiment sûr de ce qui fait un bon projet de mixage. peut-être la question est de savoir à quoi ressemble un projet de mélange pour un programme à une seule exécution. –

Répondre

1

Vous êtes trop compliqué @Peter. Ce que vous voulez, c'est un script Elixir (fichier exs). Commencez par cet exemple:

defmodule MyApp do 
    def my_test_func do 
    IO.puts "Hello world!" 
    end 
end 

MyApp.my_test_func 

Enregistrer ce code comme test1.exs. Ensuite, vous pouvez l'exécuter à partir de l'invite de commande via elixir test1.exs Ce que je dis est que vous n'avez pas besoin d'un gen_server pour un script simple.

Vous pouvez en savoir plus sur l'interaction avec le système d'exploitation ici: http://elixir-lang.org/docs/stable/elixir/System.html#content et vous pouvez voir un peu plus sur le sujet des scripts Elixir ici: http://elixir-lang.org/getting-started/introduction.html#running-scripts