Computer >> कंप्यूटर >  >> प्रणाली >> MAC

मैक सिस्टम रूबी का प्रयोग न करें - इसके बजाय इसका प्रयोग करें

हो सकता है कि किसी ने आपसे एक बार कहा हो, "रूबी प्रणाली का प्रयोग न करें।" यह अच्छी सलाह है, लेकिन क्यों? आइए जानें।

आपके पास कौन सी रूबी है?

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 के लिए है, आपके लिए नहीं।


  1. FIX:जावा कमांड-लाइन टूल का उपयोग करने के लिए आपको एक JDK (MAC OS X)

    इंस्टॉल करना होगा। मैकबुक प्रो पर निम्न पॉप अप संदेश बेतरतीब ढंग से प्रदर्शित होता है:जावा कमांड लाइन टूल का उपयोग करने के लिए आपको एक जेडीके स्थापित करने की आवश्यकता है। जावा डेवलपर किट डाउनलोड वेबसाइट पर जाने के लिए अधिक जानकारी ... क्लिक करें। त्रुटि प्राप्त हुई है क्योंकि एक स्थापित एप्लि

  1. मैक पर टास्क मैनेजर:गतिविधि मॉनिटर और इसका उपयोग कैसे करें

    मैक टास्क मैनेजर की तलाश है? जबकि विंडोज अनुभव का एक प्रमुख, मैकोज़ में विंडोज़ उपयोगिता के सटीक समकक्ष नहीं है। इसके बजाय, macOS में एक्टिविटी मॉनिटर नामक एक प्रोग्राम होता है, जो बड़े पैमाने पर, विंडोज टास्क मैनेजर के समान काम करता है। आइए अच्छी तरह से देखें कि एक्टिविटी मॉनिटर क्या है, यह मैक प

  1. Mac पर लाइन इन ऑडियो इनपुट का उपयोग करें

    जबकि प्रत्येक मैक डिवाइस एक माइक्रोफ़ोन के साथ आता है जो उत्पाद में बनाया गया है, आपको ऑडियो इनपुट और आउटपुट के लिए एक और पोर्ट भी मिलेगा- हेडफोन जैक। यह निश्चित रूप से, जब तक कि Apple इसे एक सस्ता ऐड-ऑन फीचर बनाने का फैसला नहीं करता है! हालांकि, उस समय तक, आप इस पोर्ट का उपयोग लाइन-इन ऑडियो इनपुट