簡體   English   中英

如何改變Yaws appmods文件?

[英]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模塊(並且不要忘記關閉括號后的句點)。 小寫lErlang 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM