Webmachine: Кто устанавливает static_resource: init / 1? - PullRequest
1 голос
/ 04 августа 2011

Я смотрю на две версии static_resource: init / 1 в двух приложениях Webmachine:

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 Ответ

1 голос
/ 04 августа 2011

Я посмотрел на webmachine_demo_fs_resource из здесь , и кажется, что значение, переданное в init/1, установлено в dispatch.conf.Как вы можете видеть здесь последний параметр конфигурации для 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 равным любому, что захотите, так что вы можете выбрать свое собственное приключение!

...