मैंने हाल ही में Ruby अपडेट किया और कुछ प्रोजेक्ट्स को अपग्रेड किया। और जब मैंने ऐसा किया, तो मुझे कुछ बहुत अच्छी RubyGems सुविधाएं मिलीं जिनके बारे में मुझे पहले नहीं पता था:
जब आपके एक्जीक्यूटेबल आउट-ऑफ-डेट हो जाते हैं
मैं अपने Ruby वर्जन को प्रबंधित करने के लिए rvm का उपयोग करता था। लेकिन पिछली बार जब मैंने अपनी मशीन सेट की, तो मैंने इसके बिना जाने का फैसला किया। जब आपके पास Bundler है तो आपको Gemsets की आवश्यकता नहीं है, और आप Ruby को अपडेट रखने के लिए Homebrew का उपयोग कर सकते हैं।
यह बहुत अच्छा काम करता है, जब तक आप Ruby अपडेट नहीं करते। और rails new, bundle install और वे सभी अन्य कमांड टूट जाते हैं। वे पुराने Ruby वर्जन को इंगित करेंगे, न कि जिसे आपने अभी इंस्टॉल किया है।
आप इसे प्रत्येक जेम को एक-एक करके अनइंस्टॉल और रीइंस्टॉल करके ठीक कर सकते हैं। लेकिन यह सिर्फ पागलपन है। इसके बजाय, gem pristine आज़माएं:
gem pristine --all --only-executablespre>
gem pristineएक जेम लेता है, और इसे आपके द्वारा मूल रूप से डाउनलोड किए गए संस्करण पर रीसेट करता है। यह जेम को अनइंस्टॉल और रीइंस्टॉल करने जैसा है। (यह तब भी मददगार है यदि आपने डिबगिंग के दौरान एक जेम को संपादित करने का फैसला किया, और इसे वापस बदलना भूल गए।)
--allका अर्थ है "सभी जेम्स", और--only-executablesका अर्थ है "केवल/usr/local/bin/railsऔर/usr/local/bin/bundleजैसी फ़ाइलों को रीसेट करें"। यानी, केवल उन स्क्रिप्ट्स को ठीक करें जिनका उपयोग आप कमांड लाइन से जेम चलाने के लिए करते हैं।तो यह कमांड
/usr/local/bin/railsजैसी फ़ाइलों को रीसेट करता है कि वे क्या होतीं यदि आपने जेम को अनइंस्टॉल और रीइंस्टॉल किया होता।एक मिनट बाद, आप अपने ऐप पर काम करने के लिए वापस आ जाएंगे।
जब आपको पुराने वर्जन की आवश्यकता हो
जब मैंने
respond_toपर अपनी पोस्ट लिखी, तो मैंने इसके बारे में अधिक जानने के लिए कुछ छोटे ऐप्स बनाए। मैंने यह देखने के लिए कुछ अलग Rails वर्जन का उपयोग किया कि प्रत्येक वर्जनrespond_toऔरrespond_withसे कैसे निपटता है।आप प्रत्येक Rails ऐप को सही Rails वर्जन के साथ कैसे जेनरेट करते हैं? आपको यह करने की आवश्यकता नहीं है:
gem install rails -v 4.0.0 rails new respond_to_4.0 gem uninstall rails gem install rails -v 4.1.0 rails new respond_to_4.1 gem uninstall railspre>एक आसान तरीका है। आप RubyGems को बता सकते हैं कि आप कमांड लाइन पर अंडरस्कोर के साथ कौन सा वर्जन चलाना चाहते हैं:
rails _4.0.0_ new respond_to_4.0 rails _4.1.0_ new respond_to_4.1pre>फजी जेम वर्जन
लेकिन पिछले अनुभाग में, अभी भी एक समस्या है। आप शायद वास्तव में 4.0.0 इंस्टॉल नहीं करना चाहते। आप 4.0 का नवीनतम वर्जन चाहते हैं, सभी माइनर अपडेट के साथ।
लेकिन क्या आपको याद है कि Rails 4.0 का नवीनतम माइनर वर्जन क्या है?
इसे देखने के बहुत सारे तरीके हैं। लेकिन क्यों देखें, जब RubyGems बस वही कर सकता है जो आप चाहते हैं?
gem install rails -v "~>4.0.0"pre>आप Bundler से जानने वाले सभी वर्जन स्ट्रिंग्स का उपयोग कर सकते हैं:
gem install rails -v ">3.1, <4.1"pre>उपयोगी! खासकर अगर, मेरी तरह, आप वह सामान करने से नफरत करते हैं जो कंप्यूटर बेहतर करता है।
लेकिन आपको यह सब जानने की ज़रूरत नहीं है
जब मैं इन समस्याओं में फंसा, तो मुझे नहीं पता था कि कोई आसान जवाब है। लेकिन आप अनुमान लगा सकते थे कि शायद एक होगा।
ये सभी स्थितियां थीं जहां आप समस्या को स्वयं हल कर सकते हैं, लेकिन यह दोहराव वाला और कष्टप्रद होगा।
और जब आप इस तरह के दोहराव वाले, कष्टप्रद कार्य को ढूंढते हैं, विशेष रूप से एक अच्छी तरह से उपयोग की जाने वाली परियोजना में, तो इसका मतलब दो चीजों में से एक है:
- किसी ने पहले से ही इसे स्वचालित कर दिया है, या
- बहुत सारे लोग उम्मीद कर रहे हैं कि आप इसे स्वचालित करेंगे।
इसलिए व्यस्त काम करने से पहले, थोड़ा गहरा खोदें। थोड़ा जांच करें। यह आपके समय के लायक होगा।
यह पोस्ट मूल रूप से विशेष रूप से मेरी सूची को भेजा गया था। हर शुक्रवार को अपने इनबॉक्स में इस तरह के और पोस्ट प्राप्त करने के लिए, यहां साइन अप करें!