2013-03-23 5 views
68

मैं रूबी के लिए नया हूं और अवधारणाओं के बाद अपने सिर को लपेटने की कोशिश कर रहा हूं: बंडलर बनाम आरवीएम बनाम रत्न बनाम रूबीजम्स बनाम रत्न बनाम सिस्टम रग बनाम और मैं उलझन में हूं।बंडलर बनाम आरवीएम बनाम रत्न बनाम रूबीजम्स बनाम जेमेट्स बनाम सिस्टम रूबी

क्या कोई उबंटू के नवीनतम संस्करण के ताजा इंस्टॉल पर इसे कैसे प्रबंधित करना चाहिए, इस बारे में 'सर्वश्रेष्ठ अभ्यास' का वर्णन कर सकता है? मुझे क्या इंस्टॉल करना चाहिए, और मुझे इसका उपयोग कैसे करना चाहिए?

मुझे लगता है कि sudo apt-get install ruby करने की अनुशंसा नहीं की जाती है, लेकिन मुझे यकीन नहीं है। मैंने इसे 'अन्य सभी रूबी सामान' के अलावा अपने सिस्टम पर कोशिश की। यह सिर्फ मेरे भ्रम में जोड़ रहा है। मैं रेल के बारे में बात नहीं कर रहा हूं लेकिन नियमित रूबी रत्न (जैसे वाग्रेंट, शेफ, स्क्रिप्ट)।

उत्तर

127

पिछले उत्तर के अनुसार, यह कवर करने के लिए काफी कुछ है, इसलिए इसे संक्षिप्त परिचय दें।

gems रूबी पुस्तकालयों को पैक किया गया है। वे रूबी हैं जो जावा के लिए जार हैं। एक मणि फ़ाइल के अंदर, आपको रूबी कोड (। आरबी फाइल) मिलती है, लेकिन परीक्षण भी होती है, और एक विशेष फ़ाइल जो मणि पर जानकारी देती है, जैसे उसका नाम, निर्भरता और संस्करण (gemspec)। कोई रूबी प्रोजेक्ट Gemfile के माध्यम से आवश्यक रत्नों को परिभाषित कर सकता है जिन्हें केवल निर्भरताओं की घोषणा करने की आवश्यकता है। Rubygems पैकेज मैनेजर का नाम है - उपकरण को संकुल को संस्थापित करने के लिए उपयोग किया जाता है (जबकि रत्न स्वयं संकुल होते हैं)। रूबीगेम्स अब रूबी का हिस्सा है।

Bundler प्रबंधन रत्नों को सहन करने योग्य बनाता है। अपने जेमफाइल के आधार पर, bundle install का उपयोग करके बंडलर को एक साधारण कॉल सभी आवश्यक रत्न डाउनलोड और इंस्टॉल करेगा। मानक मणि कमांड का उपयोग करके, आपको gem install <gem_name> का उपयोग करके मैन्युअल रूप से उनमें से प्रत्येक को इंस्टॉल करना होगा।बंडलर रूबी का हिस्सा नहीं है (यह स्वयं packaged as a gem है), लेकिन अधिकांश अनुप्रयोगों के लिए यह "वास्तविक तथ्य" है (आपको बहुत से लोग इसका उपयोग नहीं करेंगे, और वास्तव में इसका उपयोग न करने के कोई अच्छे कारण नहीं हैं)।

RVM एक उपकरण है जो आपको मशीन पर रूबी के कई संस्करण स्थापित करने की इजाजत देता है, जब आवश्यक हो तो उनके बीच स्विचिंग। इसका उपयोग रुबी 1.8 और 1.9, या यहां तक ​​कि "एमआरआई" (मैट्स रूबी, डिफ़ॉल्ट कार्यान्वयन) और विकल्प (जैसे जेआरबी या रूबिनीस) दोनों को स्थापित करने के लिए किया जा सकता है। ध्यान दें कि इस क्षेत्र में आरवीएम अकेला नहीं है, उदाहरण के लिए rbenv देखें।

gemset आरवीएम में दिए गए संदर्भ के लिए विशिष्ट रत्नों का एक सेट है, आमतौर पर एक परियोजना। यह उपयोगी है यदि आप उदाहरण के लिए विभिन्न अनुप्रयोगों का विकास कर रहे हैं, प्रत्येक अपने स्वयं के रत्नों के सेट के साथ, और उन्हें अलग रखना चाहते हैं।

system Ruby, आरवीएम का उपयोग करते समय, मशीन पर रूबी संस्करण स्थापित किया गया है (यानी, आरवीएम के माध्यम से नहीं)।

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

+1

अच्छा जवाब, क्या आप कृपया स्पष्टीकरण दे सकते हैं: रत्न और रूबीजम्स के बीच क्या अंतर है? और gemspec और Gemfile के बीच? साथ ही, ऊपर सूचीबद्ध इन कार्यक्रमों (उदा। बंडलर) में से कौन से 'रूबी' के साथ शामिल हैं और जो अलग-अलग एप्लिकेशन हैं (मुझे विश्वास है कि आरवीएम अलग है)? और क्या रत्न केवल आरवीएम के भीतर ही एक अवधारणा है या यह मूल रूबी के भीतर भी है (या अन्य चीजें, जैसे कि अन्य उत्तर में वर्णित आरबीएनवी)? और यदि बंडलर प्रबंधन रत्नों को आसान बनाता है, तो ऐसा करने का पूर्व-बंडलर तरीका क्या था? (यानी आप बिना बंडलर के रत्नों का प्रबंधन कैसे करेंगे, बस मुझे पता है, भले ही मैं इसे इस तरह से कभी नहीं करूंगा।) धन्यवाद! – user779159

+0

तदनुसार अपडेट किया गया। – Martin

+0

तो रूबीगेम्स पैकेज प्रबंधक का नाम है, जिसे आप 'मणि' कमांड के साथ बुलाते हैं? और क्या बंडलर रूबी के हिस्से का भी हिस्सा है, जैसे रूबीजम्स है, या मुझे इसे किसी भी तरह शामिल करने की ज़रूरत है? – user779159

1

आप स्टैक ओवरफ़्लो के लिए इन-स्कोप की तुलना में एक प्रश्न में अधिक जानकारी मांग रहे हैं। इसे कवर करने के लिए सभी एक किताब ले लेंगे।

उबंटू पर रूबी के "सिस्टम" संस्करण में रत्न स्थापित करना और निकालना आसान है, इसलिए sudo के माध्यम से नियमित रत्न स्थापित करने और निकालने के लिए उपयोग करें। (मैक ओएस पर मैं अलग सलाह दूंगा क्योंकि ऐप्पल रूबी अपने स्वयं के उपयोग के लिए बंडल करता है और इसके साथ गड़बड़ करना एक अच्छा विचार नहीं है।) फिर, जब आपको पता चलता है कि पूरा मणि विचार कैसे काम करता है, और आप जानते हैं कि आप एकाधिक चाहते हैं अपने सिस्टम पर रूबी संस्करण, "rbenv" या "RVM" आज़माएं और अपने सैंडबॉक्स में संस्करण या दो इंस्टॉल करें।

लिनक्स वितरण के माध्यम से रूबी को जोड़ने/निकालने में आसान बनाता है, लेकिन हम डिस्ट्रो रखरखाव वाले संस्करणों तक सीमित हैं, इसलिए मैं आमतौर पर स्रोत से स्थापित करता हूं। लेकिन, यह एक दर्द है जब रूबी के विकास, परीक्षण और उत्पादन प्रणालियों के लिए कई संस्करणों का प्रबंधन करते हैं, यही कारण है कि rbenv और RVM का आविष्कार किया गया - वे गंदे विस्तार को संभालते हैं जो हमें प्रोग्रामिंग पर ध्यान केंद्रित करने की इजाजत देता है।

मैंने rbenv और RVM दोनों का उपयोग किया है, और अच्छे परिणाम के साथ पिछले छह महीनों के लिए आरबीएनवी का उपयोग कर रहे हैं। यह मुझे पसंद है आरवीएम से कम जटिल है। किसी भी मामले में वे रत्न के अलग सेट के साथ, विभिन्न संस्करणों को स्थापित करना आसान बनाते हैं। यदि आप चाहते हैं तो अलग-अलग टर्मिनल विंडो में आप अलग-अलग रूबी संस्करण खोल सकते हैं, जिससे अनुकूलता के लिए परीक्षण करना आसान हो जाता है।

डीबगिंग करते समय एक नियम एक समय में परिवर्तन करना है, जो प्रोग्राम सीखने या नई भाषा सीखने के लिए सच है। विचलित मत हो, बस इसे सरल रखें।

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