बंडल बनाम आरवीएम बनाम रत्न बनाम रूबीगैम बनाम रत्नसेट बनाम सिस्टम रूबी [बंद]


102

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

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

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

जवाबों:


184

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

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

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

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

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

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

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


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

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

2
"यदि आप अभी शुरू कर रहे हैं ... [y] कहां आरवीएम दे सकते हैं ... अब के लिए एक तरफ।" जब तक आप ओएस एक्स पर नहीं होते हैं, और जिस रूबी प्रोजेक्ट को आप स्थापित करना और चलाना चाहते हैं, वह रूबी के बाद के संस्करण पर निर्भर करता है जो कि ओएस पर पहले से इंस्टॉल आता है। फिर आपको आरवीएम की आवश्यकता होगी।
हेफेस्टस

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

1

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

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

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

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

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


1
अपने डिफॉल्ट सिस्टम पैकेज मैनेजर (जैसे apt या apt-get) के अलावा किसी भी पैकेज मैनेजर को कभी भी सुडोल न करें। आप अनिवार्य रूप से अपने सिस्टम को गड़बड़ कर देंगे।
छवि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.