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

这是非常有帮助的。谢谢 –