2012-12-29 16 views
5

के अंदर एक एरलांग एप्लिकेशन कैसे चलाता है मेरे पास एक एरलांग एप्लिकेशन है और मैं इसे आसानी से संकलित कर सकता हूं और इसे बाशो रीबर का उपयोग करके चला सकता हूं जो स्टैंड-अलोन एस्क्रिप्ट निष्पादन योग्य फ़ाइल बनाता है। मैं इसे कमांड लाइन से चलाता हूं जैसे: ./myapp myconfig.configएरलांग खोल

मेरी खोज यह है कि मैं इसे एर्लांग शैल के अंदर कैसे चला सकता हूं। इस एप्लिकेशन में चार अन्य अनुप्रयोग निर्भरता के रूप में हैं। Rebar आसानी से संकलित करें। लेकिन मुझे इस एप्लिकेशन को खोल के अंदर से चलाने की जरूरत है:

erl -noshell -name node1 @ machine -run test प्रारंभ पैरामीटर 1 -s init stop;

लेकिन मुझे नहीं पता कि मुझे किस मार्ग में इसे चलाना चाहिए। जब मैं इसे "ईबिन" फ़ोल्डर में कोशिश करता हूं (जहां बीम फाइलें स्थित हैं), निर्भरताएं उपलब्ध नहीं हैं। जैसा कि मैंने देखा है कि प्रत्येक निर्भरता अनुप्रयोगों के पास "ebin" फ़ोल्डर है। तो मैं अपने आवेदन को "erl -noshell" कमांड (निर्भरता अनुप्रयोगों पर विचार करें) द्वारा कैसे चला सकता हूं? रेबर इन सभी चीजों को स्वचालित रूप से संभालता है।

/ 
    src/ 
    ebin/ 
    deps/ 
    dep1/ 
     src/ 
     ebin/ 
    dep2/ 
     src/ 
     ebin/ 

इसलिए, यदि आप अपनी परियोजना के रूट निर्देशिका में है, तो आप erl सही जगह पर साथ बात कर सकते हैं:

उत्तर

7

एक रीबार संचालित OTP आवेदन के लिए एक विशिष्ट निर्देशिका संरचना कुछ इस तरह है -pa तर्क। यह बताने के लिए कि आपके एप्लिकेशन और इसकी निर्भरताओं की बीईएम फाइलें कहां मिलें, निम्नलिखित कोशिश करें:

erl [...] -pa ebin -pa deps/*/ebin 
+0

धन्यवाद! आपका समाधान बहुत सरल है लेकिन पूर्ण और उपयोगी है। –