[英]Couchbeam in YAWS page
我在这里是因为我试图在YAWS上的页面上使用Couchbeam。 我已经测试过CB,并且可以使用以下命令从Terminal正常工作:
erl -pa ebin -pa deps/ibrowse/ebin -s couchbeam
现在,我试图在网页上本地复制自己的内容。 我认为问题是我不知道如何从yaws页面告诉erl做erl -pa ebin -pa deps / ibrowse / ebin -s长椅。
我试图简单地运行所有需要的应用程序,但是我得到了:
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>
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>
我不建议从这样的.yaws页面内运行Couchbeam。 相反,您应该创建一个Erlang版本 ,以使Couchbeam和Yaws都在同一个Erlang VM中执行,然后使用Yaws appmod调用Couchbeam,或者应该考虑使Couchbeam成为Yaws的引导yapp 。
如果您确实认为自己存在加载路径问题,则可以通过ebin_dir
指令在yaws.conf
文件中指定加载路径。 例如:
ebin_dir = deps/ibrowse/bin
ebin_dir = couchbeam/ebin
但是您显示的堆栈跟踪似乎丢失了某些内容,因此很难准确地告诉您出了什么问题。
我设法解决此问题:
我在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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.