2013-04-30 10 views
7

Ho un'applicazione erlang, compilata con l'armatura.avvia l'applicazione erlang dalla riga di comando

Normalmente avviarlo con risultati simili:

application:start(myapp). 

dall'interno del guscio Erl.

Qualcuno potrebbe dirmi come avviarlo come un normale programma da riga di comando?

+2

Alcune delle risposte a [questa domanda] (http://stackoverflow.com/q/ 7032665/113848) potrebbe aiutare. – legoscia

risposta

14

Si può fare:

erl -pa ebin -eval "application:start(myapp)" 

Se si desidera che venga eseguito in background, aggiungere -noshell -detached

+0

Nei miei codici, ho 'application: get_env()' nella funzione start e ho ottenuto {badmatch, undefined} errore restituito usando -eval "application: start (myapp)". C'è qualche altro percorso di libreria che dovrei includere come '-pa'? – VincentHuang

+0

Oh, rispondo alla mia domanda sopra. Se vuoi ottenere una variabile d'ambiente che è definita in 'etc/app.confg', non dimenticare di includerla usando '-config etc/app.config'. – VincentHuang

5

Creare script di shell, una cosa del genere:

exec erl -pa ebin/ deps/*/ebin -s myapp 

Altre opzioni che è necessario vedere http://www.erlang.org/doc/man/erl.html.

+0

{"init che termina in do_boot", {undef, [{cc, start, [], []}, {init, start_it, 1, []}, {init, start_em, 1, []}]}} – LtWorf

+1

per 'erl -s myapp' per funzionare devi scrivere una funzione nel tuo myapp.erl come' start() -> application: start (myapp) .' -s l'opzione è chiamare l'MFA. Per impostazione predefinita, chiama start senza passare i parametri se viene specificato solo il nome del modulo. – Vinod