Webmachine:谁设置了static_resource:init / 1?

时间:2011-08-04 00:05:30

标签: erlang webmachine

我正在两个Webmachine应用程序中查看两个版本static_resource:init / 1:

https://github.com/basho/wriaki/blob/master/apps/wriaki/src/session_resource.erl
http://lambder.com/2009/06/providing-static-content-in-webmachine/

在这两种情况下,传递给static_resource:init / 1的参数是DocRoot。但我找不到设置此功能的位置或定义了DocRoot。

有人能指出我的答案吗?

非常感谢,

LRP

1 个答案:

答案 0 :(得分:1)

我查看了来自webmachine_demo_fs_resourcehere,看来传递给init/1的值已在dispatch.conf中设置。正如您所见here webmachine_demo_fs_resource的配置的最后一个参数是[{root, "/tmp/fs"}],它指定了文档根目录。当然,只要您在init/1中以相同的方式阅读这些属性,就可以标记您喜欢的属性。

这解释了演示的工作原理,但从应用程序的角度来看,这可能是也可能不是正确的。也许您想要读取环境变量或boot arg来确定doc根目录的位置。例如:

init([]) ->
    DocRoot =
        case init:get_argument(doc_root) of
            {ok, [[DR]]} -> DR;
            error -> "/tmp/fs"
        end,
    {ok, #context{root=DocRoot}}.

您可以将Context值设置为您喜欢的任何值,这样您就可以选择自己的冒险!