2011-12-19 3 views
21

इस बारे में क्योंकि रत्न स्थापना gem कमांड द्वारा प्रयुक्त निर्देशिका, देखा जब gem env का उपयोग कर, की तरह कुछ करने के लिए सेट कर दिया जाता आता है?हम 1.9.1 फ़ोल्डर में रुबी 1.9.2/1.9.3 रत्न क्यों इंस्टॉल कर रहे हैं?</p> <pre><code><base_ruby_dir>/lib/ruby/gems/1.9.1 </code></pre> <p>मेरा प्रश्न क्यों है:

फ़ोल्डर नहीं बुलाया जाना चाहिए किया:

<base_ruby_dir>/lib/ruby/gems/1.9.x 

या

<base_ruby_dir>/lib/ruby/gems/1.9 

वरना वहाँ रूबी के संस्करण के अनुसार एक हो सकता है, जैसे:

c:/ruby191/lib/ruby/gems/1.9.1 
c:/ruby192/lib/ruby/gems/1.9.2 
c:/ruby193/lib/ruby/gems/1.9.3 
नहीं

एक महत्वपूर्ण समस्या मुझे पता है, मैं बस सोच रहा था।

उत्तर

28

रूबी 1.9.0 में, सी इंटरफेस रूबी 1.8 श्रृंखला से बदल दिया गया था।

देशी कोड को संकलित करने वाले रत्नों को फिर से सम्मिलित किया जाना था।

इंटरफ़ेस को रूबी 1.9.1 में फिर से बदल दिया गया था और इसे रूबी 1.9.2 & में रखा गया था। यह बताता है कि 1.9.1 आप अपने रास्ते में देख रहे हैं।

विचार यह है कि आप अपने सिस्टम पर रूबी के विभिन्न संस्करण स्थापित कर सकते हैं और उन रत्नों को समान सी एपीआई वाले समूहों के भीतर साझा किया जाएगा। तो रूबी 1.8.6 और 1.8.7 अपने रत्न साझा कर सकते थे, और इसलिए रुबी 1.9.1, .2 और .3 हो सकता था।

हालांकि, यह सबसे अच्छा विचार नहीं है, हालांकि। किसी भी मामले में, अधिकांश लोग rvm का उपयोग रूबी के विभिन्न संस्करणों तक पहुंचने के लिए करते हैं और rvm सी एपीआई संस्करण के बावजूद प्रत्येक संस्करण के लिए रत्न अलग रखता है।

+0

ठीक है, मुझे वह मिलता है। तो 1.9.1 का मतलब है कि मणि रूबी 1.9.1 में उपयोग किए गए सी इंटरफ़ेस के अनुरूप है? इस प्रकार के कार्यान्वयन विवरण का खुलासा नहीं करता है? एक मणि के अंतिम उपयोगकर्ता के दृष्टिकोण से मुझे क्यों परवाह है? और क्या मैं कभी भी दो फ़ोल्डर्स को 1.9.1 और 1.9.4 की तरफ देख रहा हूं? यदि नहीं, तो फिर, मुझे परवाह क्यों है? – Ben

+0

दाएं। सी एपीआई * सबसे निश्चित रूप से * कार्यान्वयन विवरण का खुलासा करता है! मणि उपयोगकर्ताओं को पथ के बारे में परवाह नहीं करना चाहिए। पिछले दो प्रश्नों के लिए संपादित उत्तर –

+0

मेरे लिए प्रश्न निर्देशिका नामकरण सम्मेलन के बारे में है। अगर हम जानते हैं कि रुबी के सी एपीआई में परिवर्तन रूबी के उस संस्करण का उपयोग करके सभी रत्नों का पुनर्मूल्यांकन करने जा रहा है तो मुझे या तो 1.9.1 नामक एक फ़ोल्डर मिला है जिसमें * या * 1.9.2 नामक फ़ोल्डर है (जो कुछ भी)। अगर मेरे पास रूबी के एक संस्करण के लिए दोनों नहीं हो सकते हैं तो 1.9.x अधिक समझदार होगा।मैंने रूबी के कई संस्करणों के लिए रत्नों को स्टोर करने के लिए उपयोग किए गए वही फ़ोल्डर को कभी नहीं देखा है - क्या वास्तव में यह वास्तविक उपयोग-मामला है? – Ben

0

मुझे लगता है कि ऐसा इसलिए है क्योंकि ये संस्करण संगत होना चाहिए, और यदि आपके पास अलग निर्देशिकाएं हैं, तो आपको इसके साथ अपने सभी रत्नों को पुनर्स्थापित करना होगा। इस तरह आप सभी रत्नों को पुनर्स्थापित किए बिना रूबी के संस्करण को अपग्रेड कर सकते हैं।

+1

हम्म हाँ, यह समझ में आता है। लेकिन उस मामले में फ़ोल्डर 1.9 या 1.9.x क्यों नहीं कॉल करें? मुझे अजीब लग रहा है। – Ben

+0

रूबी डेबियन पैकेज के साथ यह वही है। मैंने ruby1.9.1 नामक पैकेज से 1.9.2 इंस्टॉल किया। निष्पादन योग्य का नाम भी था। – Linuxios

+0

कोई गारंटी नहीं है (दुर्भाग्य से) कि एबीआई पूरे 1.9.एक्स जीवन चक्र के लिए समान रहेगा। यदि 1.9.4 अचानक एबीआई का उपयोग करता है जो 1.9.1-1.9.3 के साथ संगतता तोड़ता है, तो आपका 1.9.x पथ अचानक गलत तरीके से नामित किया जाता है। – jgoldschrafe