erlang otp
¿Cómo cambiar los archivos de appmods de Yaws? (1)
Estoy tratando de administrar Yast appmod. Asi que:
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(''[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]))}]}.
Y funcionó cuando lo usé por primera vez. Pero más tarde, cuando cambié algo en myappmod.erl, nada cambió en respuesta al servidor. Luego eliminé myappmod.erl, pero aún funciona. ¿Qué debo hacer para hacer algunos cambios?
Cuando inicia Yaws, eventualmente hace referencia a su módulo myappmod2
, lo que hace que el tiempo de ejecución de Erlang cargue el archivo de rayo producido al compilar el módulo. Una vez que está cargada, permanece cargada hasta que la recarga a la fuerza, como a través del shell interactivo de Erlang, o al detener y reiniciar Yaws y el tiempo de ejecución de Erlang. Simplemente volver a compilar el módulo desde el exterior no lo vuelve a cargar.
Si ejecuta Yaws de forma interactiva mediante guiñada yaws -i
, puede presionar "enter" una vez que se inicia para obtener un intérprete interactivo de Erlang. Si cambia un módulo de appmod y lo vuelve a compilar, asegúrese de copiar el nuevo archivo de rayo sobre el antiguo y simplemente escriba l(myappmod2).
en el shell interactivo y luego presiona enter para volver a cargar el módulo myappmod2
(y no olvides el período después del paréntesis de cierre). Esa letra l
minúscula es el comando de carga del shell Erlang . También puede compilar el módulo directamente en el shell usando c(myappmod2).
comando, que compilará y cargará (suponiendo que no haya errores de compilación).
Si tiene Yaws ejecutándose de forma no interactiva, por ejemplo, como un proceso de fondo de daemon de fondo, puede volver a cargar los módulos en él ejecutando el siguiente comando:
yaws --load myappmod2
Puede colocar múltiples nombres de módulo después de la opción --load
si desea cargarlos todos a la vez. Si su instancia de Yaws tiene una identificación específica, asegúrese de usar también la opción --id
adecuada para identificarla.
Si está interesado en volver a cargar automáticamente los módulos recompilados, puede buscar algo como el módulo reloader.erl , que busca módulos recompilados y los carga automáticamente. No lo recomendaría para uso de producción, pero puede ser útil para el desarrollo.