2011-06-22 12 views
7

मैं कुछ रबी कोड को एक मणि में पैक करता हूं। मैं किसी अन्य कोड में मणि में कोड को संदर्भित करना चाहता हूं। तो जेमफाइल में मैं मणि का नाम, संस्करण और स्थानीय पथ निर्दिष्ट करता हूं। जैसा:रूबी में स्थानीय मणि का संदर्भ कैसे लें?

gem 'gemname','0.x', :path => 'RELATIVE_PATH_TO_GEM_FILE' 

बंडल के बाद स्थापित करते हैं, मैं

Using gemname (0.x) from source at RELATIVE_PATH_TO_GEM_FILE 

देख लेकिन जब मैं कोड चलाने के लिए, यह मणि में कोड नहीं मिल रहा। LOAD_PATH ABSOLUTE_PATH_TO_GEM_FILE/lib दिखाता है।

कोई आश्चर्य नहीं कि यह कोड नहीं मिल रहा है, केवल ABSOLUTE_PATH_TO_GEM_FILE के तहत केवल मणि फ़ाइल है। यह अनपॅक नहीं है। तो कोई lib निर्देशिका नहीं है।

अगर मैं अपने सिस्टम में उस मणि फ़ाइल को स्थापित करता हूं, तो सभी ठीक काम करते हैं। मैं देख सकता हूं कि मणि फ़ाइल को स्रोत कोड फ़ाइलों में अनपॅक किया गया था। लेकिन मेरा सवाल यह है कि क्या यह स्थानीय मणि फ़ाइल को किसी भी तरह से संदर्भित कर सकता है?

+0

आम तौर पर, "स्थानीय मणि" शब्द का अर्थ है जिसे आपने किसी अन्य वेबसाइट से डाउनलोड करने के बजाय स्थानीय रूप से संकलित और स्थापित किया है। क्या आपने ऐसा करने के बजाय स्थानीय रूप से मणि को संकलित और स्थापित करने पर विचार किया है? –

+0

वास्तव में, .gem फ़ाइल स्वयं द्वारा बनाई गई थी। मैंने बस उस .gem फ़ाइल में कुछ रूबी कोड पैक किया है जिससे उन्हें अन्य कोड के साथ साझा करना आसान हो जाता है। और .gem फ़ाइल में lib निर्देशिका है। मैं सोच रहा था कि यह जावा के रूप में जार की तरह होगा। मुझे लगता है कि रूबी पैकेज से बाहर निकालने के बजाय उस पैकेज फ़ाइल में देख सकते हैं। और भ्रमित रूप से, बंडलर वास्तव में पैकेज में स्रोत पाता है। लेकिन load_path पैकेज में निर्देशिका का समर्थन नहीं करता है। – user810923

+0

और वैसे, हालांकि बंडलर ने मेरे विशिष्ट पथ के तहत .gem फ़ाइल पाई है, यह विक्रेता/कैश में .gem को कैश नहीं करेगा, जब तक कि .gem फ़ाइल सिस्टम जेमसेट में स्थापित नहीं की जाती है। – user810923

उत्तर

7

नहीं, आप सीधे .gem फ़ाइल का संदर्भ नहीं दे सकते।

अपनी शब्दावली में, आपको "अनपॅक" मणि का उपयोग करने की आवश्यकता है।

:path => '/foo/bar/' 

जहां /foo/bar/lib/ के साथ एक (मणि) निर्देशिका है, आदि

1

हमें स्थानीय (नहीं पूरे सिस्टम में) Gems स्थान बनाया है। उस निर्देशिका में बनाया मणि डाल करने के लिए

GEM_HOME=/path/to/rubygems-1.3.4 
RUBYLIB=/path/to/rubygems-1.3.4/lib/ 

उन की स्थापना करके, हम तो क्या कर सकते हैं 'मणि स्थापित ...', और गहरे लाल रंग का जानता है, जहां उन्हें खोजने के लिए: हम इन वातावरण चर निर्धारित किया है।

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