YAWS页面中的Couchbeam

时间:2012-09-17 12:49:18

标签: couchdb webpage yaws

我在这里是因为我试图在YAWS上使用Couchbeam形成我的页面。 我已经测试了CB,它在终端上正常工作,使用:

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

现在我试图在我的网页上复制我在本地做的事情。 我相信问题是我不知道怎么告诉erl从雅司病页面上做'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>


 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>

2 个答案:

答案 0 :(得分:1)

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

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

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

但是你显示的堆栈跟踪似乎缺少某些东西,所以很难告诉你到底出了什么问题。

答案 1 :(得分:0)

我设法解决了这个问题:

我在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>