हो सकता है कि किसी ने आपसे एक बार कहा हो, "रूबी प्रणाली का प्रयोग न करें।" यह अच्छी सलाह है, लेकिन क्यों? आइए जानें।
आपके पास कौन सी रूबी है?
MacOS पहले से स्थापित "सिस्टम रूबी" के साथ आता है।
which
का प्रयोग करें यह देखने के लिए आदेश दें कि रूबी कहाँ स्थापित है:
$ which ruby
/usr/bin/ruby
यदि आप /usr/bin/ruby
देखते हैं , यह पहले से स्थापित macOS सिस्टम Ruby है।
sysadmin स्क्रिप्ट चलाने के लिए सिस्टम रूबी का उपयोग करना ठीक है, जब तक कि आप सिस्टम रूबी को अपडेट करने या रत्न जोड़ने का प्रयास करके सिस्टम को परिवर्तित नहीं करते हैं।
लेकिन जब आप रूबी में प्रोजेक्ट विकसित कर रहे हों तो आप इसका उपयोग नहीं करना चाहते हैं।
रूबी फ़ॉर डेवलपमेंट
रूबी के साथ परियोजनाओं को विकसित करने के लिए, आपको रूबी को होमब्रे के साथ स्थापित करना चाहिए या संस्करण प्रबंधक जैसे कि asdf, chruby, rbenv, या rvm का उपयोग करना चाहिए।
एक संस्करण प्रबंधक मदद करता है यदि आप कई परियोजनाओं को जोड़ रहे हैं और सभी को एक साथ अपडेट नहीं कर सकते हैं। एक गाइड के लिए जो संस्करण प्रबंधकों की तुलना करता है और रूबी को स्थापित करने का सबसे अच्छा तरीका दिखाता है, मेरा लेख मैक पर रूबी स्थापित करें देखें।
लेकिन macOS डिफ़ॉल्ट रूबी का उपयोग क्यों न करें? आइए उन कारणों पर एक नज़र डालें कि विकास के लिए मैक डिफ़ॉल्ट रूबी का उपयोग करना एक बुरा विचार क्यों है।
रत्न स्थापना संबंधी समस्याएं
RubyGems तैयार सॉफ़्टवेयर लाइब्रेरी हैं जो रूबी में विकास को आसान और मज़ेदार बनाती हैं। अधिकांश रूबी प्रोजेक्ट कम से कम कुछ रत्नों का उपयोग करते हैं।
यदि आप मैक सिस्टम रूबी का उपयोग करते हैं, तो gem install
. चल रहा है सिस्टम में रत्नों को सहेजने का प्रयास करेंगे रूबी निर्देशिका /Library/Ruby/Gems/2.6.0
. वह निर्देशिका root
. के स्वामित्व में है , सिस्टम सुपरयुसर। साधारण उपयोगकर्ताओं को इसे लिखने की अनुमति नहीं है (और आपको वास्तव में इस फ़ोल्डर को नहीं बदलना चाहिए)।
यदि आप कोई रत्न स्थापित करने का प्रयास करते हैं, उदाहरण के लिए gem install rails
, आपको एक अनुमति त्रुटि मिलेगी:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory
यह सिस्टम सुरक्षा का उल्लंघन करता है
यूनिक्स-आधारित सिस्टम शक्तिशाली हैं, इसलिए एक समाधान है। आप अनुमति प्रतिबंध को ओवरराइड करने के लिए रत्नों को एक सुपरयुसर के रूप में स्थापित कर सकते हैं। लेकिन ऐसा मत करो!
$ sudo gem install rails
जब भी आप sudo
चलाने वाले हों , आपको रुकना चाहिए और पूछना चाहिए कि क्या आप अपने आप को पैर में गोली मारने वाले हैं।
इस मामले में, आपको sudo
. की आवश्यकता होगी क्योंकि आप ओएस द्वारा प्रबंधित सिस्टम फाइलों को बदल रहे हैं। मत करो! आप सिस्टम को टूटी हुई या समझौता स्थिति में छोड़ सकते हैं। इससे भी बदतर, किसी रत्न में दुर्भावनापूर्ण कोड हो सकता है जो आपके कंप्यूटर के साथ छेड़छाड़ करता है।
रत्न प्रबंधन
अनुभवी डेवलपर्स रत्न स्थापित करने और उनकी निर्भरता को प्रबंधित करने के लिए बंडलर का उपयोग करते हैं।
कल्पना कीजिए कि आपके पास ऐसी परियोजनाएं हैं जो एक मणि के विभिन्न संस्करणों का उपयोग करती हैं (हो सकता है कि आपकी परियोजनाओं के बीच एक नया मणि रिलीज हो)। या हो सकता है कि आपकी परियोजना में दो अलग-अलग रत्न एक आश्रित रत्न के विभिन्न संस्करणों पर निर्भर हों।
आपके लिए आवश्यक रत्नों पर नज़र रखने के लिए Bundler आपकी प्रोजेक्ट निर्देशिका में Gemfile का उपयोग करता है। अगर आपको sudo
. का इस्तेमाल करना होता सिस्टम रूबी के साथ रत्न स्थापित करने के लिए, आप सिस्टम रूबी निर्देशिका में असंगत रत्नों की गड़बड़ी के साथ समाप्त हो जाएंगे।
आप बंडलर को एक कमांड के साथ स्थापित करके सिस्टम अनुमति समस्या के आसपास काम कर सकते हैं जो रत्नों के लिए आपके होम डायरेक्टरी का उपयोग करता है। लेकिन रूबी को होमब्रे के साथ स्थापित करना या संस्करण प्रबंधक का उपयोग करना और इंस्टॉल किए गए बंडलर का उपयोग करना आसान है, जो आपके स्थानीय विकास परिवेश को सही ढंग से स्थापित करेगा।
नवीनतम रूबी का उपयोग करें
जब आप कोई प्रोजेक्ट शुरू करते हैं, तो नवीनतम रूबी रिलीज़ का उपयोग करें (जब यह लिखा गया था तब यह 3.0 था)।
macOS कैटालिना या बिग सुर में रूबी सिस्टम रूबी 2.6.3 है, जो पुराना है। यदि आप अभी रूबी से शुरू कर रहे हैं, तो होमब्रू के साथ इंस्टॉल करें और रूबी 3.0 के साथ एक प्रोजेक्ट पर काम करें। जब आप किसी अन्य प्रोजेक्ट का निर्माण शुरू करते हैं, तो यह एक संस्करण प्रबंधक स्थापित करने का समय हो सकता है ताकि आप विभिन्न रूबी संस्करणों के साथ परियोजनाओं को जोड़ सकें।
मैकोज़ आफ्टर बिग सुर
MacOS बिग सुर अब वर्तमान संस्करण है। एप्पल का कहना है:
"पायथन, रूबी और पर्ल जैसे स्क्रिप्टिंग भाषा रनटाइम को macOS में लीगेसी सॉफ़्टवेयर के साथ संगतता के लिए शामिल किया गया है। macOS के भविष्य के संस्करणों में डिफ़ॉल्ट रूप से स्क्रिप्टिंग भाषा रनटाइम शामिल नहीं होंगे, और आपको अतिरिक्त पैकेज स्थापित करने की आवश्यकता हो सकती है। ।"
अगर आप इसे 2021 के अंत में पढ़ रहे हैं, तो हो सकता है कि रूबी सिस्टम पहले ही चला गया हो। यदि नहीं, तो रूबी को होमब्रे या एक संस्करण प्रबंधक के साथ स्थापित करके खुद को तैयार करें।
रूबी का आनंद लें
रेल के साथ वेब एप्लिकेशन बनाने की योजना बनाने वाले डेवलपर्स के लिए, मैंने एक गाइड लिखा है, मैक पर रेल स्थापित करें, जो मैक पर इंस्टाल रूबी से आगे जाता है, यह दिखाने के लिए कि एक संस्करण प्रबंधक कैसे चुनें जो नोड के साथ-साथ रूबी के साथ काम करेगा।पी>
रूबी में कोडिंग का आनंद लें! आखिरकार, इसे प्रोग्रामर खुशी को समर्पित भाषा के रूप में जाना जाता है। लेकिन याद रखें, रूबी सिस्टम macOS के लिए है, आपके लिए नहीं।