代码之家  ›  专栏  ›  技术社区  ›  skanatek

二郎boss_db你好世界?

  •  2
  • skanatek  · 技术社区  · 12 年前

    最近我尝试安装并运行的演示 boss_db ORM代表Erlang。

    以下是我所做的:

    • 克隆存储库
    • cd boss_db/
    • rebar get-deps
    • 将一个简单的mydb.erl文件放入 src/ 以下为:

      -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(数据库选项)。

    • rebar compile

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

    以下是我得到的:

    ** exception exit: shutdown
    

    我在这里做错了什么?它应该如何运行?

    附言:我也试着运行application:start(boss_db),但结果是一样的。

    附言:我已阅读 documentation 两次,但我仍然不知道如何处理整个事情。

    2 回复  |  直到 12 年前
        1
  •  2
  •   cashmere Vinod    12 年前

    您没有向代码路径添加依赖项。这就是为什么在找不到异常时抛出异常的原因。不要对ebin和erl进行cd。改为运行

    erl -pa ebin -pa deps/*/ebin
    

    来自当前目录。

    顺便说一句,这不是做这种事情的好方法。相反,使用钢筋创建一个新的空应用程序。在rebar.config中添加boss_db作为应用程序的依赖项。将您自己的源文件放在src下。然后

    rebar get-deps compile
    erl -pa ebin -pa deps/*/ebin
    
        2
  •  1
  •   spfoos    12 年前
    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数据库,但无法连接到它

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