Appmod是一种让应用程序程序员控制URL路径的方法。它们被实现为Erlang模块。例如myappmod.erl

-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易于管理?

我应将myappmod.erl保存在yaws目录树的哪个目录中,并且编译后myappmod.beam放在哪里?

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

欢迎所有帮助!

最佳答案

编译appmod只需调用erlc compiler即可。然后,将生成的梁文件安装到Yaws已知的加载目录中,该目录使用yaws.conf指令在ebin_dir文件中指定:

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


您可以在此处指定自己的路径。多个ebin_dir设置是累积的-所有此类路径都添加到了Yaws加载路径中。

为了积极开发您的appmod,并自动重新加载您的更改,您可以使用the sync project之类的东西。

还使用yaws.conf指令在server块的appmods中指定了appmod的URL。您可以在Yaws documentation中找到示例。例如,如果您希望您的appmod控制服务器的整个URL空间,则可以指定/作为其URL路径:

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


另请注意,您可以在exclude_paths设置中指定的可选appmods指令,通常用于排除存储静态加载资源的路径。例如,以下设置表示myappmod处理整个URL空间/,但以/icons开头的任何URL路径除外:

appmods = </, myappmod exclude_paths icons>

10-08 03:13