YAWS嵌入式作为对rebar3问题的依赖

cas*_*lic 3 erlang yaws rebar

我试图在嵌入式模式的应用程序(作为dep)中使用YAWS.我正在使用rebar3.我的应用程序通过rebar3(经过一些调整后)得到雅虎并且发布很好,但是当我启动它时,YAWS正在崩溃.它似乎正在尝试启动,即使它应该处于嵌入模式.

我正在尝试将yaws.app.src配置为嵌入式模式env,如下所示:

{application,yaws,
 [{description,"yaws WWW server"},
  {vsn, {cmd, "sed -ne '1,/^YAWS_VSN=/s/^YAWS_VSN=//p' vsn.mk 2>/dev/null"}},
  {modules,[]},
  {registered, []},
  {mod,{yaws_app,[]}},
  {env, [
           {embedded, true}             % true | false
        ]},
  {applications,[kernel,stdlib@APPDEPS@]}]}.
Run Code Online (Sandbox Code Playgroud)

我认为它是自动启动的,因为它在我的app.src文件中列为应用程序.(虽然不确定)如果我从这里删除我没有获得YAW版本的文件.但是在启动时它正在寻找配置文件而不是像嵌入式模式那样.

=INFO REPORT==== 2-Sep-2015::19:00:58 ===
Yaws: Using config file /Users/someuser/csvp/_build/default/lib/yaws/etc/yaws/yaws.conf
Run Code Online (Sandbox Code Playgroud)

我错过了什么?为什么它仍在启动以及它为什么使用配置文件?

Ste*_*ski 7

我怀疑你是在指定Yaws应该在发布开始时启动,就像发布中的其他应用程序一样; 基本上,相当于调用application:start(yaws).你应application:load(yaws)该做什么而不是加载雅司但不启动它 - 相当于- 我相信你可以通过{yaws, load}rebar.config文件的relx部分指定来做.然后,您应该按照"在您自己的主管下面开始"部分下的Yaws文档中的这些说明进行操作.根据您的具体需求,您可以拨打其中一个yaws_api:embedded_start_conf/1,2,3,4获得Yaws服务器confs,全局配置和子规格.然后,您可以使用子规范在您的主管下启动Yaws,如"使用embedded_start_conf"中所述,然后设置Yaws配置服务器confs和global conf以使其运行.

(顺便说一句,我是Yaws的贡献者,目前正在确保Yaws与rebar3合作.我将添加Yaws发行版所需的任何资源或文档,以帮助像您尝试将其与rebar3一起使用的用户.)