2016-06-07 12 views
6

रूबी लिपियों में, मैं बस कर सकता है:मैं एक साधारण elixir स्क्रिप्ट में एक elixir पुस्तकालय कैसे लोड करूं?

require 'some-gem' 

SomeGem.do_something! 

मैं exs लिपियों अमृत में इसी तरह के एक ब्रांड के नए मिश्रण परियोजना बनाने के बिना कुछ कैसे कर सकते हैं? अब तक मैंने ऐसा करने के तरीकों पर Google की खोज की है, और कुछ ब्लॉग पोस्ट (such as this) पढ़ा है, लेकिन ऐसा करने के लिए उचित (पढ़ा 'सरल') तरीका नहीं पता लगा सकता है।

विशेष रूप से, मैं अपने elixir स्क्रिप्ट में HTTPoison का उपयोग करना चाहता हूं।

उत्तर

3

रूली में मौजूद एलिक्सीर में कोई वैश्विक पैकेज इंस्टॉल नहीं है। हालांकि यह .beam फ़ाइलों में निर्भरताओं को संकलित करने के लिए तकनीकी रूप से संभव हो सकता है और यदि आप रूबी के समान व्यवहार चाहते हैं, तो उन्हें अपनी स्क्रिप्ट के लोड पथ (जैसे लेख से लिंक किया गया है) में जोड़ें, मैं आपको सलाह देता हूं कि आप इसका उपयोग करें लोड की गई सभी परियोजना निर्भरताओं के साथ मनमानी स्क्रिप्ट चलाने के लिए mix run

सभी निर्भरता आप mix.exs में निर्दिष्ट करना चाहते हैं के साथ एक वैश्विक mix प्रोजेक्ट बना, किसी भी .exs फ़ाइल में अपने कोड (एक ही फ़ोल्डर में होना जरूरी नहीं है) लिखते हैं, और द्वारा

cd /path/to/mix/project && mix run /path/to/.exs 

निष्पादित आप केवल my-elixir script.exs पर आक्रमण करके उपरोक्त स्वचालित रूप से करने के लिए एक रैपर शेल स्क्रिप्ट भी बना सकते हैं।

(मैं नियमित रूप से जवाब StackOverflow पर यहाँ जो HTTPoison और/या ज़हर की तरह कुछ सामान्य निर्भरता का उपयोग के लिए इस परीक्षण के दौरान कोड से करते हैं।)

1

मिश्रण के बिना, यह थोड़ा जटिल हो सकता है, लेकिन करने योग्य।

मुझे लगता है कि आपको उस पथ को स्पष्ट रूप से जोड़ना होगा जहां HTTPoison आपके पूर्व स्क्रिप्ट के शीर्ष पर संकलित है।

एलिक्सीर एआरएलएएन वीएम कोड पथ सूची की शुरुआत के लिए पथ तैयार करने के लिए एपीआई Code.expand_path प्रदान करता है। आप API here के बारे में अधिक जानकारी प्राप्त कर सकते हैं।