我在两个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
发布于 2011-08-04 08:39:31
我查看了来自here的webmachine_demo_fs_resource,看起来传递给init/1的值是在dispatch.conf中设置的。如您所见,webmachine_demo_fs_resource的配置的最后一个参数是[{root, "/tmp/fs"}],它指定了文档根目录。当然,您可以随心所欲地标记属性,只要您在init/1中以相同的方式读出它们即可。
这解释了演示是如何工作的,然而,从应用程序的角度来看,这可能是也可能不是正确的事情。也许您想要读取环境变量或boot arg,以确定您的文档根目录应该在哪里。例如:
init([]) ->
DocRoot =
case init:get_argument(doc_root) of
{ok, [[DR]]} -> DR;
error -> "/tmp/fs"
end,
{ok, #context{root=DocRoot}}.您可以将Context值设置为您喜欢的任何值,因此您可以选择您自己的冒险!
https://stackoverflow.com/questions/6934758
复制相似问题