Чтобы уточнить, что уже было сказано, я приведу рабочий пример (с нуля). Это для того, чтобы помочь тем, кто пришел сюда из гугла, в основном потому, что так я его нашел;)
Сначала создайте модуль:
# filename: my_esi.erl
-module(my_esi).
-export([foo/3,bar/3]).
foo(Sid, Env, In) -> mod_esi:deliver(Sid, ["foo"]).
bar(Sid, Env, In) -> mod_esi:deliver(Sid, ["bar"]).
Сохраните, затем скомпилируйте:
erlc my_esi.erl
Теперь у вас будет my_esi.beam
Затем запустите оболочку из bash
erl
Внутри оболочки введите следующее:
inets:start().
{Httpd_State,Httpd_Pid} = inets:start(httpd, [{port, 8099}, {server_name, "localhost"}, {document_root, "."}, {modules,[mod_esi]},{server_root, "."}, {erl_script_alias, {"/esi", [my_esi, io]}}]).
Важная часть здесь:
{modules,[mod_esi]}
Если вам нужны другие модули, загрузите их, добавив их в список.
Чтобы уточнить, как / почему:
Сначала я признаю, что сначала это кажется немного странным, и что документация оказалась менее полезной, чем я надеялся. Однако я понял, что:
modules() -> [atom()]
становится:
{modules, [mod_access, mod_esi, ..., etc.]}
Надеюсь, это кому-нибудь поможет:)