Non ho mai veramente usato i file .app
per i miei progetti. Capisco quelli sono necessari per il caricamento di un'applicazione tramite il modulo application
.Beneficiare del file ".app" in Erlang?
Esiste un altro uso di tali file?
Non ho mai veramente usato i file .app
per i miei progetti. Capisco quelli sono necessari per il caricamento di un'applicazione tramite il modulo application
.Beneficiare del file ".app" in Erlang?
Esiste un altro uso di tali file?
Il * .app insieme al file * .rel viene utilizzato per generare script di avvio. Uno script di avvio viene utilizzato per avviare automaticamente la mia applicazione all'avvio di erlang. Un file di risorse dell'applicazione descrive quali applicazioni devono essere in esecuzione prima che la mia applicazione possa essere avviata. Ad esempio, se uso mnesia e lo indico nel file .app per la mia applicazione, quando creo uno script di avvio e lo utilizzo per avviare la mia applicazione, avvierà mnesia per me all'avvio della mia applicazione.
Mentre è possibile ottenere l'installazione/gestione delle dipendenze automatiche con altri gestori di pacchetti, lo script di avvio è utile per gestire le dipendenze nell'avvio dell'applicazione che è importante in una configurazione dell'applicazione OTP.
note: le applicazioni in otp si riferiscono a un insieme di processi in esecuzione e/o codice. le applicazioni possono dipendere da altre applicazioni in vari modi. O richiedono il codice da installare o richiedono che l'applicazione sia in esecuzione.
Vengono utilizzati per la creazione di versioni (con * .rel per generare script di avvio). Ti consiglio di iniziare con il file * .app e con il callback del comportamento dell'applicazione. Per quanto riguarda l'avvio con OTP. E 'un punto debole bella in fase di sviluppo da fare:
-module(foo).
-export([start/0]).
start() ->
[application:start(A) || A <- [sasl, inets, x, y, etc]].
per avviare tutte le applicazioni che dipendono da dover correre per la vostra applicazione con un semplice
$ erl -s foo
-mnesia dir '"/some/path"'
a erl, si accede dall'applicazione mnesia come application:get_env(mnesia, dir)
. Se si definisce un'applicazione denominata foo
, è possibile passare a -foo key 'some-Erlang-literal'
in erl. Il file * .app può contenere valori predefiniti nella sezione env
, il file * .rel li sostituisce e la riga di comando lo sovrascrive.Alcune funzioni aggiuntive di applicazioni Erlang che io non conosco bene:
Eventualmente inizierai a voler avviare l'applicazione impostata in un modo più strutturato, e cioè quando l'intero rilascio/script di avvio diventerà più comprensibile. Al contrario, penserai che sia eccessivo per te per esigenze specifiche. Inizia con un semplice * .app e un modulo con i callback del comportamento dell'applicazione. Non guarderai indietro.
Grazie per il vostro contributo. Sono abituato a confezionare le mie applicazioni per la distribuzione utilizzando un repository Debian (vale a dire le dipendenze sono gestite, l'installazione/aggiornamento ecc.). In questo contesto, cosa mi prendo OTP/.app? – jldupont
se il tuo file .app è configurato, il codice sopra è superfluo. Solo l'applicazione: start (my_app) è tutto ciò che è necessario per avviare tutte le tue dipendenze e quindi la tua app. Se hai generato uno script di avvio, puoi fare in modo che quanto sopra si verifichi automaticamente all'avvio di erlang. –
Aggiunta ai vantaggi: i file .app consentono allo script di avvio di rilevare i moduli duplicati o i nomi dei processi all'interno delle applicazioni. Inoltre, consente alla VM di caricare tutti i moduli all'avvio, quindi è possibile utilizzare la modalità incorporata. Puoi anche applicare le versioni corrette delle applicazioni, ecc ... – Zed
Sebbene non abbia riscontrato una situazione in cui l'ordine dei gruppi di applicazioni è importante, posso apprezzarne l'utilità. Grazie! – jldupont