2011-06-15 13 views
7

मेरे पास st_db.app फ़ाइल में आवश्यक अनुप्रयोग हैं:Erlang: मैं स्वचालित रूप से सभी आवश्यक अनुप्रयोगों को ऐप में कैसे शुरू कर सकता हूं?

{application, st_db, 
[ 
    {description, ""}, 
    {vsn, "1.0.0"}, 
    {registered, []}, 
    {modules, [st_db_app, st_db_sup, st_db]}, 
    {applications, [ 
        kernel, 
        stdlib, 
      sasl, 
      crypto, 
      ibrowse, 
      couchbeam 
       ]}, 
    {mod, { st_db_app, []}}, 
    {env, []} 
]}. 

मुझे मुख्य ऐप चलाने और डीबग करने के लिए स्वचालित रूप से उन्हें (क्रिप्टो, एसएसएल, इत्यादि) शुरू करने की आवश्यकता है। मुझे मिला एकमात्र समाधान इस तरह के पैराम के साथ erl शुरू करना है:

erl -pa ./ebin -pa ./deps/*/ebin -boot start_sasl -s couchbeam -s crypto -s ibrowse 

क्या यह एकमात्र तरीका है?

पीएस: बीटीडब्ल्यू कॉचबीम नोड पर शुरू नहीं होता है। यह सिर्फ सोफेबीम के पर्यवेक्षक को शुरू करता है, इसलिए मुझे इसे खोलने के लिए मैन्युअल रूप से

=PROGRESS REPORT==== 15-Jun-2011::10:22:43 === 
      supervisor: {local,couchbeam_sup} 
      started: [{pid,<0.62.0>}, 
         {name,couchbeam}, 
         {mfargs,{couchbeam,start_link,[]}}, 
         {restart_type,permanent}, 
         {shutdown,2000}, 
         {child_type,worker}] 

2> application:start(couchbeam). 
ok 
3> 
=PROGRESS REPORT==== 15-Jun-2011::10:23:25 === 
      supervisor: {local,couchbeam_sup} 
      started: [{pid,<0.69.0>}, 
         {name,couchbeam}, 
         {mfargs,{couchbeam,start_link,[]}}, 
         {restart_type,permanent}, 
         {shutdown,2000}, 
         {child_type,worker}] 

=PROGRESS REPORT==== 15-Jun-2011::10:23:25 === 
     application: couchbeam 
      started_at: [email protected] 

इसे ठीक करने का कोई तरीका है?

उत्तर

4

या तो आप -वल की एक श्रृंखला जारी कर सकते हैं "एप्लिकेशन: प्रारंभ (coucnbeam)" आदेशों को erl करने के लिए, या उचित ओटीपी तरीका करें और आपके लिए एक नई बूट फ़ाइल उत्पन्न करने के लिए reltool का उपयोग करें।

reltool पर जानकारी के लिए http://www.erlang.org/doc/man/reltool.html देखें, यह भी rebar आप के लिए भारी उठाने की ज्यादा कर रही है पर एक उत्कृष्ट काम करता है ताकि आप उस के रूप में अच्छी तरह से (http://github.com/basho/rebar)

5

तुम सिर्फ चारों ओर में खिलवाड़ कर रहे हैं में देखना चाहते हो सकता है कंसोल और इन सभी 'एप्लिकेशन में टाइप नहीं करना चाहते हैं: शुरू करें (...)।' लाइनें, इन चीजों को अपनी वर्तमान कार्यशील निर्देशिका में .erlang फ़ाइल में डालें। यहाँ मैं क्या पर काम कर रहा हूँ अभी के लिए एक उदाहरण है:

$ cat .erlang 
application:start(crypto). 
application:start(public_key). 
application:start(ssl). 
application:start(ibrowse). 
application:start(foo). 

यह मेरा सब निर्भरता शुरू होता है, और फिर अनुप्रयोग मैं पर काम कर रहा हूँ अभी, foo।


आप rebar साथ एक reltool रिहाई जनरेट करना चाहते हैं, इस लिंक पर मदद कर सकता है:

When to use erlang application:start or included_applications and a supervisor?

विशेष रूप से, इस सार:

https://gist.github.com/3728780

-Todd

0

आपके आवेदन कॉलबैक मॉड्यूल में पर ensure_all_started एपीआई, बस लिखना:

-module(st_db_app). 
-behaviour(application). 
-export([start/2, stop/1]). 

start(_StartType, _StartArg) -> 
    %% Get application name 
    {ok, AppName} = application:get_application(), 
    %% Start all dependencies that are not yet started for application name 
    {ok, _StartedApps} = application:ensure_all_started(AppName), 
    %% start application's root supervisor or do other initialization here 
    %% and return root supervisor's pid. 
संबंधित मुद्दे

 संबंधित मुद्दे