2015-10-15 84 views
4

Appmods是一種讓應用程序員控制URL路徑的方法。它們被實現爲Erlang模塊。例如myappmod.erl編譯並運行Yaws appmods

-module(myappmod). 
-include("../../yaws_api.hrl"). 
-compile(export_all). 

out(Arg) -> 
    Method = (Arg#arg.req)#http_request.method, 
    handle(Method, Arg). 

handle(Method,Arg) -> 
    %% Do something 
    ok. 

我該如何執行編譯以使此appmod易於管理?

yaws目錄樹的哪個目錄應該保存myappmod.erl,並且myappmod.beam在編譯之後去哪裏?

如何生成引用此appmod的URL路徑?

歡迎任何幫助!

回答

4

編譯你的appmod是一個叫erlc compiler的問題。然後,您所產生的光束文件安裝到知雅司病負載目錄,它使用的是ebin_dir指令在yaws.conf文件中指定:

ebin_dir = /path/to/some/ebin 
ebin_dir = /path/to/another/ebin 

你可以在這裏指定自己的路徑。多個ebin_dir設置是累積的—所有這些路徑被添加到Yaws負載路徑。

要積極開發您的appmod,並自動重新載入您的更改,您可以使用類似the sync project的東西。

您的appmod的URL也在yaws.confserver塊中使用appmods指令指定。您可以在Yaws documentation中找到示例。例如,如果你希望你的appmod來控制服務器對整個URL空間,您可以指定/作爲其URL路徑:

<server foo> 
    port = 8001 
    listen = 0.0.0.0 
    docroot = /filesystem/path/to/www 
    appmods = </, myappmod> 
</server> 

注意,你也可以在appmods設置中指定的可選exclude_paths指令,通常用於排除存儲靜態加載資源的路徑。例如,下面的設置意味着myappmod處理整個URL空間/除了開頭/icons任何URL路徑:

appmods = </, myappmod exclude_paths icons> 
+0

@Vinoski溶液是非常有用的。謝謝! –

+0

這是非常有幫助的。謝謝 –