मैंने कभी भी अपनी परियोजनाओं के लिए .app
फ़ाइलों का उपयोग नहीं किया है। मैं समझता हूं कि application
मॉड्यूल के माध्यम से एप्लिकेशन लोड करने के लिए आवश्यक हैं।Erlang में ".app" फ़ाइल के लिए लाभ?
क्या ऐसी फ़ाइलों का एक और उपयोग है?
मैंने कभी भी अपनी परियोजनाओं के लिए .app
फ़ाइलों का उपयोग नहीं किया है। मैं समझता हूं कि application
मॉड्यूल के माध्यम से एप्लिकेशन लोड करने के लिए आवश्यक हैं।Erlang में ".app" फ़ाइल के लिए लाभ?
क्या ऐसी फ़ाइलों का एक और उपयोग है?
* .app फ़ाइल के साथ * .app फ़ाइल बूट स्क्रिप्ट उत्पन्न करने के लिए उपयोग किया जाता है। Erlang शुरू होने पर स्वचालित रूप से मेरे एप्लिकेशन को लॉन्च करने के लिए बूट स्क्रिप्ट का उपयोग किया जाता है। एक एप्लिकेशन संसाधन फ़ाइल बताती है कि मेरे एप्लिकेशन को लॉन्च करने से पहले कौन से अनुप्रयोगों को चलाने की आवश्यकता है। उदाहरण के लिए, यदि मैं मैनेशिया का उपयोग करता हूं और इंगित करता हूं कि मेरे एप्लिकेशन के लिए .app फ़ाइल में, जब मैं बूट स्क्रिप्ट उत्पन्न करता हूं और अपना एप्लिकेशन शुरू करने के लिए इसका उपयोग करता हूं तो यह मेरे अपने आवेदन को शुरू करते समय मेरे लिए मैनेशिया शुरू कर देगा।
आप अन्य पैकेज प्रबंधकों बूट स्क्रिप्ट अपने आवेदन के स्टार्टअप जो OTP का आवेदन सेटअप में महत्वपूर्ण है में निर्भरता के प्रबंधन के लिए उपयोगी है के साथ निपटने/स्वचालित निर्भरता स्थापना मिल सकता है।
नोट: ओटीपी में अनुप्रयोग चलने वाली प्रक्रियाओं और/या कोड के बंडल को संदर्भित करते हैं। आवेदन कई तरीकों से अन्य अनुप्रयोगों पर निर्भर कर सकते हैं। या तो उन्हें कोड स्थापित करने की आवश्यकता होती है या उन्हें एप्लिकेशन को चलाने की आवश्यकता होती है।
उनका उपयोग रिलीज के निर्माण के लिए किया जाता है (बूट स्क्रिप्ट उत्पन्न करने के लिए * .rel के साथ)। मैं बस * .app फ़ाइल और एप्लिकेशन व्यवहार कॉलबैक से शुरू करने की अनुशंसा करता हूं। ओटीपी के साथ शुरू करने के लिए।
-module(foo).
-export([start/0]).
start() ->
[application:start(A) || A <- [sasl, inets, x, y, etc]].
एक सरल
$ erl -s foo
-mnesia dir '"/some/path"'
को erl में पास करते हैं, तो इसे मैनेशिया एप्लिकेशन द्वारा application:get_env(mnesia, dir)
के रूप में एक्सेस किया जाता है। यदि आप foo
नामक एप्लिकेशन को परिभाषित करते हैं, तो आप -foo key 'some-Erlang-literal'
को एआरएल में पास कर सकते हैं। * .app फ़ाइल में env
अनुभाग में डिफ़ॉल्ट शामिल हो सकते हैं, * .rel फ़ाइल उन्हें ओवरराइड करती है, और कमांड लाइन उस पर ओवरराइड करती है।Erlang अनुप्रयोगों है कि मैं अच्छी तरह से पता नहीं है में से कुछ अतिरिक्त सुविधाओं:
आखिरकार आप अपने आवेदन सेट को अधिक संरचित तरीके से शुरू करना शुरू कर देंगे, और यही वह समय है जब पूरी रिलीज/बूट-स्क्रिप्ट अधिक समझने योग्य हो जाएगी। या इसके विपरीत, आपको लगता है कि यह आपके लिए विशिष्ट आवश्यकताओं के लिए अधिक है। बस एक सरल * .app और एप्लिकेशन व्यवहार कॉलबैक के साथ एक मॉड्यूल के साथ शुरू करें। आप वापस देखो नहीं।
आपके योगदान के लिए धन्यवाद। मुझे डेबियन रिपोजिटरी (यानी निर्भरताओं को संभाला, स्थापना/अपग्रेड इत्यादि) का उपयोग करके तैनाती के लिए अपने अनुप्रयोगों को पैकेज करने के लिए उपयोग किया जाता है। इस संदर्भ में, ओटीपी/.app मुझे क्या प्राप्त करता है? – jldupont
यदि आपकी .app फ़ाइल सेट अप की गई है तो उपरोक्त कोड अनिवार्य है। बस आवेदन करें: शुरू करें (my_app) आपके सभी सिक्योरिटीज और फिर अपना ऐप शुरू करने के लिए आवश्यक है। यदि आपने बूट स्क्रिप्ट जेनरेट की है तो आप erlang प्रारंभ करते समय उपरोक्त स्वचालित रूप से आपके लिए हो सकते हैं। –
लाभों में जोड़ना: .app फ़ाइलें डुप्लिकेट मॉड्यूल या अनुप्रयोगों के भीतर प्रक्रिया नामों का पता लगाने के लिए बूट स्क्रिप्ट बिल्डिंग को सक्षम करती हैं। इसके अलावा यह वीएम को सभी मॉड्यूल को शुरू करने में सक्षम बनाता है, ताकि आप एम्बेडेड मोड का उपयोग कर सकें। आप अनुप्रयोगों के सही संस्करणों को भी लागू कर सकते हैं, आदि ... – Zed
हालांकि मुझे ऐसी स्थिति का सामना नहीं हुआ है जहां अनुप्रयोगों के समूहों का क्रम महत्वपूर्ण है, मैं इसकी उपयोगिता की सराहना कर सकता हूं। धन्यवाद! – jldupont