【发布时间】:2016-08-11 01:14:39
【问题描述】:
我花了几个小时尝试使用 yaws 文档和网络搜索来解决此问题。这里现有的线程对我没有帮助。
我是 erlang 的新手,我正在尝试使用 http://yaws.hyber.org/embed.yaws 上提供的示例代码以嵌入式模式运行 yaws。我错过了一些东西,因为我无法让它工作。我有四个文件:
ybed.app
{application, ybed_app,
[
{description, "Yaws Embedded Application Test"},
{vsn, "0.1.0"},
{registered, []},
{applications, [kernel, stdlib, yaws]},
{mod, {ybed_app, []}},
{env, []}
]}.
ybed_app.erl
-module(ybed_app).
-behaviour(application).
%% Application callbacks
-export([start/2,
stop/1]).
start(_StartType, _StartArgs) ->
case ybed_sup:start_link() of
{ok, Pid} ->
{ok, Pid};
Other ->
{error, Other}
end.
stop(_State) ->
ok.
ybed_sup.erl
-module(ybed_sup).
-behaviour(supervisor).
%% API
-export([start_link/0]).
%% Supervisor callbacks
-export([init/1]).
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
init([]) ->
YBed = {ybed, {ybed,start,[]},
permanent,2000,worker,[ybed]},
{ok,{{one_for_all,0,1}, [YBed]}}.
ybed.erl
-module(ybed).
-compile(export_all).
start() ->
{ok, spawn(?MODULE, run, [])}.
run() ->
Id = "embedded",
GconfList = [{id, Id}],
Docroot = "/tmp",
SconfList = [{port, 8000},
{servername, "foobar"},
{listen, {127,0,0,1}},
{docroot, Docroot}],
{ok, SCList, GC, ChildSpecs} =
yaws_api:embedded_start_conf(Docroot, SconfList, GconfList, Id),
[supervisor:start_child(ybed_sup, Ch) || Ch <- ChildSpecs],
yaws_api:setconf(GC, SCList),
{ok, self()}.
当我编译它(成功)并尝试启动应用程序时,我得到一个返回值:
{error,{not_loaded,yaws}}
当我尝试运行编译后的 ybed.erl, ybed:run() 时,我得到:
** exception error: undefined function yaws_api:embedded_start_conf/4
in function ybed:run/0 (src/ybed.erl, line 16)
如果我在启动应用程序之前启动 yaws,它仍然不起作用。
我还没有尝试构建版本,只是在嵌入式模式下编译和测试 yaws。谁能告诉我我错过了什么?
提前致谢
【问题讨论】: