[英]How to change Yaws appmods files?
我正在嘗試管理Yast appmod。 所以:
yaws.conf:
<server localhost>
port = 8005
listen = 127.0.0.1
docroot = /home/ziel/www/CatsScript/src/
appmods = </, myappmod>
</server>
來自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]))}]}.
當我第一次使用它時它起作用了。 但后來當我在myappmod.erl中更改了某些內容時,服務器的響應沒有任何變化。 比我刪除myappmod.erl,但它仍然有效。 我該怎么做才能做些改變?
當你啟動Yaws時,它最終引用你的myappmod2
模塊,導致Erlang運行時加載通過編譯模塊產生的beam文件。 加載后,它會一直加載,直到您強行重新加載它,例如通過交互式Erlang shell,或者停止並重新啟動Yaws和Erlang運行時。 只需從外部重新編譯模塊就不會重新加載它。
如果您通過yaws -i
交互方式運行Yaws,則可以在啟動時點擊“enter”以獲取交互式Erlang shell。 如果更改appmod模塊並重新編譯它,請確保將新的光束文件復制到舊模塊上,然后只需鍵入l(myappmod2).
在交互式shell中然后按Enter鍵重新加載myappmod2
模塊(並且不要忘記關閉括號后的句點)。 小寫l
是Erlang shell的load命令 。 您也可以使用c(myappmod2).
直接在shell中編譯模塊c(myappmod2).
命令,它將編譯並加載它(假設沒有編譯錯誤)。
如果您以非交互方式運行Yaws,例如作為常規后台守護程序進程,則可以通過運行以下命令將模塊重新加載到其中:
yaws --load myappmod2
如果要一次性加載它們,可以在--load
選項后面放置多個模塊名稱。 如果您的Yaws實例具有特定ID,請確保您還使用適當的--id
選項來識別它。
如果您對自動重新加載重新編譯的模塊感興趣,可以查看reloader.erl模塊,它會監視重新編譯的模塊並自動加載它們。 我不推薦它用於生產用途,但它可以方便開發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.