0

YAWSのページからCouchbeamを使用しようとしているため、ここにいます。私はCBをテストしましたが、ターミナルから次を使用して正しく機能しました。

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

今、私は自分のWebページでローカルに行ったことを複製しようとしています。問題は、yawsページから「erl-pa ebin -pa deps / ibrowse /ebin-scouchbeam」を実行するようにerlに指示する方法がわからないことだと思います。

必要なすべてのアプリを実行しようとしましたが、次のようになりました。

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>
4

2 に答える 2

1

このような .yaws ページ内から Couchbeam を実行することはお勧めしません。代わりに、Couchbeam と Yaws の両方が同じ Erlang VM 内で実行されるようにErlang リリースを作成してから、 Yaws appmodを使用して Couchbeamを呼び出すか、Couchbeam を Yaws のブートストラップ yappにすることを検討する必要があります。

ロード パスに問題があると本当に思われる場合は、ディレクティブyaws.confを介してファイルにロード パスを指定できます。ebin_dir例えば:

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

しかし、表示されたスタック トレースには何かが欠けているように見えるため、何が問題なのかを正確に伝えるのは困難です。

于 2012-09-18T01:54:17.633 に答える
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>
于 2012-09-18T07:36:11.847 に答える