2012-09-17 19 views
0

我在這裏是因爲我想在YAWS上使用Couchbeam來形成我的頁面。 我已經測試CB,並從終端工作正常,使用:在YAWS中的Couchbeam頁面

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代碼:

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

回答

1

我不會建議從內部運行Couchbeam像這樣的.yaws頁面。您應該改爲create an Erlang release,這樣Couchbeam和Yaws都會在同一個Erlang虛擬機中執行,然後使用Yaws appmod來呼叫Couchbeam,或者您應該考慮讓Couchbeam成爲Yaws的bootstrap yapp

如果你真的認爲你有負載路徑的問題,你可以通過ebin_dir指令指定的yaws.conf文件加載路徑。例如:

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

但是您顯示的堆棧跟蹤看起來好像缺少某些東西,所以很難確切地告訴您發生了什麼問題。

+0

感謝您的意見;這對獲得解決方案非常有幫助:) – N3sh

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 /本地/ VAR /偏航/

然後我修改這樣的代碼:

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>