2012-07-03 6 views
6

Sto cercando di gestire Yast appmod. Quindi:
yaws.conf:Come modificare i file di appmod di Yaws?

<server localhost> 
    port = 8005 
    listen = 127.0.0.1 
    docroot = /home/ziel/www/CatsScript/src/ 
    appmods = </, myappmod> 
</server> 

da http://yaws.hyber.org/appmods.yaws myappmod.erl:

-module(myappmod2). 
-author('[email protected]'). 

-include("/home/ziel/erlang/yaws/include/yaws_api.hrl"). 
-compile(export_all). 

box(Str) -> 
    {'div',[{class,"box"}], 
    {pre,[],Str}}. 

out(A) -> 
    {ehtml, 
    [{p,[], 
    box(io_lib:format("A#arg.appmoddata = ~p~n" 
         "A#arg.appmod_prepath = ~p~n" 
         "A#arg.querydata = ~p~n", 
         [A#arg.appmoddata, 
         A#arg.appmod_prepath, 
         A#arg.querydata]))}]}. 

E ha funzionato quando l'ho usato prima volta. Ma più tardi, quando ho cambiato qualcosa in myappmod.erl nulla è cambiato in risposta dal server. Di quanto ho eliminato myappmod.erl, ma funziona ancora. Cosa devo fare per apportare alcune modifiche?

+1

Hai ricompilato il file .erl? –

+0

gli appmod sono normali moduli di erlang e quindi DEVONO essere compilati per riflettere i cambiamenti. –

risposta

14

All'avvio di Yaws, fa riferimento al modulo myappmod2, facendo in modo che il runtime di Erlang carichi il file del raggio prodotto dalla compilazione del modulo. Una volta caricato, rimane caricato fino a quando non lo si ricarica forzatamente, ad esempio attraverso la shell interattiva di Erlang, oppure arrestando e riavviando Yaws e il runtime di Erlang. Ricompilare semplicemente il modulo dall'esterno non lo ricarica.

Se si esegue Yaws in modo interattivo tramite yaws -i, è possibile premere "Invio" una volta avviato per ottenere una shell interattiva di Erlang. Se cambi un modulo appmod e ricompililo, assicurati di copiare il nuovo file del raggio su quello vecchio e poi digita semplicemente l(myappmod2). nella shell interattiva e poi premi invio per ricaricare il modulo myappmod2 (e non dimenticare il periodo successivo al parentesi chiusa). Questo minuscolo l è il Erlang shell's load command. È anche possibile compilare il modulo direttamente nella shell utilizzando il comando c(myappmod2)., che verrà compilato e caricato (presupponendo che non vi siano errori di compilazione).

Se hai Framboesia in esecuzione in modo non interattivo, dicono come sfondo regolare processo demone, è possibile ricaricare i moduli in esso eseguendo il comando seguente:

yaws --load myappmod2 

È possibile inserire più nomi di modulo dopo l'opzione --load se vuoi caricarli tutti in una volta. Se l'istanza di Yaws ha un ID specifico, assicurati di utilizzare anche l'appropriata opzione --id per identificarla.

Se si è interessati al ricaricamento automatico dei moduli ricompilati, si potrebbe prendere in considerazione qualcosa come il modulo reloader.erl, che controlla i moduli ricompilati e li carica automaticamente. Non lo consiglierei per l'uso in produzione, ma può essere utile per lo sviluppo.