2

最近、Erlang用のboss_dbORMのデモをインストールして実行しようとしました。

これが私がしたことです:

  • リポジトリのクローンを作成します
  • cd boss_db/
  • rebar get-deps
  • src/単純なmydb.erlファイルを:に入れます

    -module(mydb).
    
    -compile(export_all).
    
    start() ->
    

    DBOptions = [{adapter、pgsql}、{db_host、 "localhost"}、{db_port、5432}、{db_username、 "postgres"}、{db_password、 "mypass"}、
    {cache_enable、false}、{cache_exp_time、0} ]、

    boss_db:start(DBOptions)。

  • rebar compile

  • cd ebin/
  • 走るerl
  • mydb:start()

これが私が得るものです:

** exception exit: shutdown

私はここで何を間違っていますか?どのように実行されることになっていますか?

PS application:start(boss_db)も実行しようとしましたが、結果は同じです。

PPSドキュメントを2回読んだことがありますが、それでもすべてを実行する方法がわかりません。

4

2 に答える 2

2

コードパスに依存関係を追加していません。そのため、例外が見つからない場合は例外がスローされます。ebinとerlにCDを挿入しないでください。代わりに実行

erl -pa ebin -pa deps/*/ebin

現在のディレクトリから。

ところで、これはこの種のことをするのに良い方法ではありません。代わりに、鉄筋を使用して新しい空のアプリを作成します。rebar.configのアプリへの依存関係としてboss_dbを追加します。独自のソースファイルをsrcの下に置きます。その後

rebar get-deps compile
erl -pa ebin -pa deps/*/ebin
于 2012-10-03T17:27:03.940 に答える
1
git clone git://github.com/evanmiller/boss_db.git
cd boss_db/
rebar get-deps
emacs src/mydb.erl
rebar compile
erl -pa ./ebin ./deps/*/ebin

これらの手順は私にとってはうまくいきました。code:is_loaded()erlを実行した直後は機能しません。モジュールが呼び出されたときにのみ、コードがロードされます。

アプリケーションがシャットダウンしますが、コードがPostgres DBに接続しようとしていて、接続できないためです。

Erlang R15B02 (erts-5.9.2) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.2  (abort with ^G)
1> mydb:start().
** exception exit: shutdown
=ERROR REPORT==== 9-Oct-2012::12:13:07 ===
** Generic server <0.35.0> terminating 
** Last message in was {'EXIT',<0.34.0>,
                        {{badmatch,
                          {error,
                           {{badmatch,
                             {error,
                              {{badmatch,{error,econnrefused}},
                               [{pgsql_sock,init,1,
                                 [{file,"src/pgsql_sock.erl"},{line,51}]},
                                {gen_server,init_it,6,
                                 [{file,"gen_server.erl"},{line,304}]},
                                {proc_lib,init_p_do_apply,3,
                                 [{file,"proc_lib.erl"},{line,227}]}]}}},
                            [{boss_db_controller,init,1,
                              [{file,"src/boss_db_controller.erl"},{line,31}]},
                             {gen_server,init_it,6,
                              [{file,"gen_server.erl"},{line,304}]},
                             {proc_lib,init_p_do_apply,3,
                              [{file,"proc_lib.erl"},{line,227}]}]}}},
                         [{poolboy,new_worker,2,
                           [{file,"src/poolboy.erl"},{line,348}]},
                          {poolboy,prepopulate,4,
                           [{file,"src/poolboy.erl"},{line,370}]},
                          {poolboy,init,2,
                           [{file,"src/poolboy.erl"},{line,74}]},
                          {gen_fsm,init_it,6,
                           [{file,"gen_fsm.erl"},{line,361}]},
                          {proc_lib,init_p_do_apply,3,
                           [{file,"proc_lib.erl"},{line,227}]}]}}
** When Server state == {state,
                            {<0.35.0>,poolboy_sup},
                            simple_one_for_one,
                            [{child,undefined,boss_db_controller,
                                 {boss_db_controller,start_link,
                                     [[{size,5},
                                       {max_overflow,10},
                                       {adapter,pgsql},
                                       {db_host,"localhost"},
                                       {db_port,5432},
                                       {db_username,"postgres"},
                                       {db_password,"mypass"},
                                       {cache_enable,false},
                                       {cache_exp_time,0}]]},
                                 temporary,brutal_kill,worker,
                                 [boss_db_controller]}],
                            {set,0,16,16,8,80,48,
                                {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],
                                 []},
                                {{[],[],[],[],[],[],[],[],[],[],[],[],[],[],
                                  [],[]}}},
                            0,1,[],poolboy_sup,
                            {boss_db_controller,
                                [{size,5},
                                 {max_overflow,10},
                                 {adapter,pgsql},
                                 {db_host,"localhost"},
                                 {db_port,5432},
                                 {db_username,"postgres"},
                                 {db_password,"mypass"},
                                 {cache_enable,false},
                                 {cache_exp_time,0}]}}
** Reason for termination == 
** {{badmatch,
        {error,
            {{badmatch,
                 {error,
                     {{badmatch,{error,econnrefused}},
                      [{pgsql_sock,init,1,
                           [{file,"src/pgsql_sock.erl"},{line,51}]},
                       {gen_server,init_it,6,
                           [{file,"gen_server.erl"},{line,304}]},
                       {proc_lib,init_p_do_apply,3,
                           [{file,"proc_lib.erl"},{line,227}]}]}}},
             [{boss_db_controller,init,1,
                  [{file,"src/boss_db_controller.erl"},{line,31}]},
              {gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},
              {proc_lib,init_p_do_apply,3,
                  [{file,"proc_lib.erl"},{line,227}]}]}}},
    [{poolboy,new_worker,2,[{file,"src/poolboy.erl"},{line,348}]},
     {poolboy,prepopulate,4,[{file,"src/poolboy.erl"},{line,370}]},
     {poolboy,init,2,[{file,"src/poolboy.erl"},{line,74}]},
     {gen_fsm,init_it,6,[{file,"gen_fsm.erl"},{line,361}]},
     {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,227}]}]}
于 2012-10-09T16:16:37.137 に答える