【问题标题】:Couchbeam in YAWS pageYAWS 页面中的 Couchbeam
【发布时间】:2012-09-09 16:27:37
【问题描述】:

我在这里是因为我想在 YAWS 上使用 Couchbeam 表单。 我已经测试了 CB,它在终端上正常工作,使用:

erl -pa ebin -pa deps/ibrowse/ebin -s couchbeam

现在我正在尝试在我的网页上复制我在本地所做的事情。 我认为问题在于我不知道如何告诉 erl 从 yaws 页面执行 'erl -pa ebin -pa deps/ibrowse/ebin -s couchbeam'。

我试图简单地运行所有需要的应用程序,但我得到了这个:

Stack: [{ibrowse_lib,url_encode,["test"],[]},
{couchbeam,save_doc,3,[{file,"src/couchbeam.erl"},{line,383}]},
{m50,out,1,
     [{file,"/Users/Nesh/.yaws/yaws/default/m50.erl"},{line,35}]},
{yaws_server,deliver_dyn_part,8,
             [{file,"yaws_server.erl"},{line,2647}]},
{yaws_server,aloop,4,[{file,"yaws_server.erl"},{line,1152}]},
{yaws_server,acceptor0,2,[{file,"yaws_server.erl"},{line,1013}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,227}]}]

这是我的 erl 代码:

<erl>


 startApp() ->
 application:start(crypto),
 application:start(private_key),
 application:start(ssl),
 application:start(sasl), 
 application:start(ibrowse),
 application:start(couchbeam).



out(Arg) ->
startApp(),

Host = "localhost",
Port = 5984,
Prefix = "",
Options = [],
S = couchbeam:server_connection(Host, Port, Prefix, Options),

Options = [],{ok, Db} = couchbeam:open_db(S, "erlang", Options),

Doc = {[{<<"_id">>, <<"test">>},{<<"content">>, <<"web text">>}]},
{ok, Doc1} = couchbeam:save_doc(Db, Doc).


</erl>

【问题讨论】:

    标签: couchdb webpage yaws


    【解决方案1】:

    我设法解决了这个问题:

    我在 yaws.conf 中添加了这些行:

    ebin_dir = /usr/local/var/yaws/couchbeam/deps/ibrowse/ebin
    ebin_dir = /usr/local/var/yaws/couchbeam/deps/jiffy/ebin
    ebin_dir = /usr/local/var/yaws/couchbeam/deps/mochiweb/ebin
    ebin_dir = /usr/local/var/yaws/couchbeam/ebin
    

    注意:我将文件夹 'couchbeam' 放在 /usr/local/var/yaws/ 中

    然后我这样修改代码:

    load_deps() ->
    
    application:start(sasl),
    application:start(ibrowse),
    application:start(jiffy),
    application:start(inets),
    application:start(xmerl),
    application:start(compiler),
    application:start(syntax_tools),
    application:start(mochiweb),
    application:start(couchbeam).
    
    
    out(Arg) ->
    
    load_deps(),
    Host = "localhost",
    Port = 5984,
    Prefix = "",
    Options = [],
    S = couchbeam:server_connection(Host, Port, Prefix, Options),
    
    Options = [],{ok, Db} = couchbeam:open_db(S, "erlang", Options),
    
    Doc = {[{<<"content">>, <<"Checking webpage">>}]},
    {ok, Doc1} = couchbeam:save_doc(Db, Doc),
    
    {html, "Document has been added"}.
    
    
    </erl>
    

    【讨论】:

      【解决方案2】:

      我不建议在这样的 .yaws 页面中运行 Couchbeam。您应该改为使用create an Erlang release,这样 Couchbeam 和 Yaws 都在同一个 Erlang VM 中执行,然后使用 Yaws appmod 调用 Couchbeam,或者您应该考虑将 Couchbeam 设为 Yaws 的 bootstrap yapp

      如果您确实认为您遇到了加载路径问题,您可以通过ebin_dir 指令在yaws.conf 文件中指定加载路径。例如:

      ebin_dir = deps/ibrowse/bin
      ebin_dir = couchbeam/ebin
      

      但是您显示的堆栈跟踪似乎缺少某些内容,因此很难确切地告诉您出了什么问题。

      【讨论】:

      • 感谢您的意见;这对解决问题非常有帮助:)
      猜你喜欢
      • 2010-09-17
      • 2012-04-05
      • 2016-07-06
      • 2012-03-19
      • 2013-12-25
      • 2014-12-21
      • 2010-11-02
      • 2014-07-28
      • 2012-03-19
      相关资源
      最近更新 更多