7 votes

Comment modifier les fichiers appmods de Yaws ?

J'essaie de gérer Yast appmod. Donc :
yaws.conf :

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

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

-module(myappmod2).
-author('klacke@bluetail.com').

-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]))}]}.

Et ça a marché quand je l'ai utilisé la première fois. Mais plus tard, lorsque j'ai modifié quelque chose dans myappmod.erl, rien n'a changé dans la réponse du serveur. J'ai alors supprimé myappmod.erl, mais il fonctionne toujours. Que dois-je faire pour apporter des modifications ?

15voto

Steve Vinoski Points 2301

Lorsque vous lancez le logiciel Yaws, il fait éventuellement référence à vos myappmod2 ce qui amène le runtime Erlang à charger le fichier beam produit par la compilation du module. Une fois chargé, il le reste jusqu'à ce que vous le rechargiez de force, par exemple via le shell Erlang interactif, ou en arrêtant et redémarrant Yaws et le runtime Erlang. La simple recompilation du module depuis l'extérieur ne le recharge pas.

Si vous exécutez Yaws de manière interactive via yaws -i vous pouvez appuyer sur "enter" une fois qu'il démarre pour obtenir un shell Erlang interactif. Si vous modifiez un module appmod et le recompilez, assurez-vous de copier le nouveau fichier beam par-dessus l'ancien, puis tapez simplement l(myappmod2). dans l'interpréteur de commandes interactif, puis appuyez sur la touche Entrée pour recharger l'écran d'accueil. myappmod2 (et n'oubliez pas le point après la parenthèse fermante). Cette minuscule l est le Commande de chargement du shell Erlang . Vous pouvez également compiler le module directement dans le shell en utilisant la commande c(myappmod2). qui le compilera et le chargera (en supposant qu'il n'y ait pas d'erreur de compilation).

Si vous avez fait tourner Yaws de manière non interactive, par exemple en tant que démon en arrière-plan, vous pouvez y recharger des modules en exécutant la commande suivante :

yaws --load myappmod2

Vous pouvez mettre plusieurs noms de modules après le --load si vous voulez les charger tous en même temps. Si votre instance Yaws a un identifiant spécifique, assurez-vous d'utiliser également l'option appropriée --id pour l'identifier.

Si vous êtes intéressé par le rechargement automatique des modules recompilés, vous pouvez vous pencher sur quelque chose comme l'application reloader.erl qui recherche les modules recompilés et les charge automatiquement. Je ne le recommanderais pas pour une utilisation en production, mais il peut être pratique pour le développement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X