यदि आपको रूबी में कुछ करने की आवश्यकता है, तो उसके लिए शायद एक जेम मौजूद है। खैर, शायद उसके लिए एक दर्जन जेम मौजूद हैं। उनमें से कुछ सुरुचिपूर्ण, फीचरफुल, और अच्छी तरह से बनाए रखा जाता है, और अन्य को उस एक उपयोग के मामले को हल करने के लिए लिखा गया था जो लेखक को उस एक समय में मिला था। आपके पास चुनने के लिए बहुत सारे जेम हैं, तो आप सही वाला कैसे चुनते हैं? यह विकल्प महत्वपूर्ण है – जब तक आप अपने प्रोजेक्ट में एक जेम जोड़ने पर पछताते हैं, तब तक वापस बदलना दर्दनाक होता है।
आंकड़े
जब मुझे एक लाइब्रेरी की आवश्यकता होती है जो मेरी समस्या को हल करे, तो मैं रूबी टूलबॉक्स से शुरू करता हूं। रूबी टूलबॉक्स एक श्रेणी (जैसे "सब्सक्रिप्शन प्रबंधन") में सभी जेम की सूची प्राप्त करने का एक शानदार तरीका है, साथ में:
-
कितने लोग इसका उपयोग करते हैं?
लोकप्रिय जेम आमतौर पर एक कारण से अधिक लोकप्रिय होते हैं। और अगर इंटरनेट पर बाकी सभी लोग उसी जेम का उपयोग कर रहे हैं तो मदद प्राप्त करना बहुत आसान होगा।
-
इसे कितनी हाल ही में / कितनी बार अपडेट किया जाता है?
क्या जेम को लगातार अपडेट मिलते हैं, या वह रेल्स 3.2 संगतता अपग्रेड अभी भी पुल रिक्वेस्ट कतार में बैठा है? अगर आखिरी रिलीज सालों पहले हुई थी, तो आप इसे छोड़ना चाह सकते हैं – यह शायद आपके ऐप के साथ संगत नहीं होगा, वैसे भी।
रूबी टूलबॉक्स पर मिले जेम के साथ, उन पहले दो मानदंडों द्वारा फ़िल्टर किए गए, आपके पास सक्रिय रूप से विचार किए जा रहे जेम की एक सूची होनी चाहिए। रूबी टूलबॉक्स आपको सोर्स, डॉक्यूमेंटेशन, वेबसाइट, और बग ट्रैकर के लिंक भी देता है, जिनकी आपको अगले चरण में आवश्यकता होगी।
कोड और डॉक्यूमेंटेशन
-
क्या जेम अच्छी तरह से डॉक्यूमेंटेड है?
वेबसाइट देखें, अगर उसके पास एक है। क्या डॉक्यूमेंटेशन अच्छा है? क्या इसमें RDoc है? जब आपको उनकी आवश्यकता होगी तो क्या आप जरूरत के जवाब ढूंढ पाएंगे?
-
क्या यह अच्छी तरह से टेस्टेड है?
टेस्ट पर एक नज़र डालें। क्या इसके पास
test/याspec/डायरेक्टरी भी है? क्या इसके पासtest_truthसे परे कोई टेस्ट हैं? क्या लेखक को पता चलेगा अगर वे रिग्रेशन का कारण बनते हैं? -
इश्यू और पुल रिक्वेस्ट देखें
क्या बग जल्दी ठीक हो जाते हैं? क्या बग और पुल रिक्वेस्ट पर चर्चा होती है, और क्या वे ठीक हो जाते हैं? या वे बस वहीं पड़े रहते हैं?
-
गूगल, स्टैकओवरफ्लो, और रेडिट पर जेम के नाम की खोज करें
लोग इसके बारे में क्या कहते हैं? कौन से जेम की सिफारिश की जाती है, और किन को हतोत्साहित किया जाता है?
-
जेम द्वारा प्रदान की गई कुछ क्लास के लिए GitHub पर खोजें
उनका उपयोग वास्तविक ऐप्स में कैसे किया जाता है? क्या वे उपयोग करने में आसान लगते हैं? या अन्य डेवलपर्स को जेम में समस्याओं के आसपास हैक करना पड़ता है?
इस बिंदु पर आपके पास कुछ शेष उम्मीदवारों तक अपना विकल्प सीमित होना चाहिए।
व्यक्तिपरक चीजें
ये मानदंड थोड़े व्यक्तिपरक हैं, यही कारण है कि आपको अपने प्रोजेक्ट के लिए सही जेम ढूंढना होगा। लेकिन अगर आप इन पर चूक जाते हैं, तो आपको बाद में पछतावा होगा।
-
डॉक्यूमेंटेशन में उदाहरणों के आधार पर, क्या लाइब्रेरी रूबी-ईश महसूस होती है?
क्या यह रूबी मुहावरों का उपयोग करता है? या आपको लगता है कि आप वास्तव में जावा या PHP लिख रहे हैं? यह API रैपर्स के साथ अविश्वसनीय रूप से अक्सर होता है।
-
क्या यह छोटे हिस्सों से बना है जो एक साथ अच्छी तरह से काम करते हैं?
क्या आप लेखक द्वारा दिए गए ऑब्जेक्ट्स का उपयोग उन चीजों को बनाने के लिए कर सकते हैं जिनके बारे में लेखक ने कभी नहीं सोचा था? क्योंकि आप शायद चाहेंगे।
-
क्या जेम पहले से ही किसी अन्य जेम द्वारा उपयोग किया जाता है जो पहले से ही आपके प्रोजेक्ट में है?
बोनस, आपने खुद को कुछ एकीकरण समय बचा लिया, और आप जानते हैं कि आपको बंडलर के साथ वर्जनिंग पर लड़ाई नहीं करनी पड़ेगी।
-
क्या जेम आपके ऐप के बारे में धारणाएं बनाता है? क्या आपका ऐप उन धारणाओं के अनुरूप है, और क्या यह हमेशा अनुरूप रहेगा?
कुछ जेम, जैसे ActiveResource, उस सर्वर के API के बारे में धारणाएं बनाते हैं जिससे वे बात करते हैं। अन्य, जैसे ResourceController, इस बारे में धारणाएं बनाते हैं कि आपका कंट्रोलर क्या करेगा। धारणा बनाने वाले जेम आपको बहुत तेज़ बना सकते हैं और आपका कोड बहुत सरल - जब तक वे धारणाएं मान्य रहती हैं। अगर वे धारणाएं आपके ऐप के साथ असंगत हो जाती हैं, तो आप खुद को दिनों तक मंकी पैचिंग, डिबगिंग, और अंततः जेम को फाड़कर बाहर निकालने में खर्च करते हुए पाएंगे।
वाह, यह बहुत है।
हां, आपके प्रोजेक्ट के लिए सर्वश्रेष्ठ जेम चुनने के लिए आप बहुत सारे मानदंडों का उपयोग कर सकते हैं। और आपको आमतौर पर उन सभी से गुजरना नहीं पड़ेगा। ज्यादातर समय, आप बस रूबी टूलबॉक्स पर जा सकते हैं और सबसे लोकप्रिय जेम चुन सकते हैं।
लेकिन कुछ जेम हैं जो आपके ऐप के मुख्य भाग बन जाते हैं। HTTP लाइब्रेरी, डेटाबेस लाइब्रेरी, या कुछ भी जो आपके कंट्रोलर को क्लीनर बनाने का वादा करता है, जैसी चीजें। और यह सुनिश्चित करने के लिए अतिरिक्त समय लेना उचित है कि ये जेम साफ, अच्छी तरह से बनाए रखा, अच्छी तरह से डॉक्यूमेंटेड हैं, और आपके मानसिक मॉडल के अनुरूप हैं कि उन्हें कैसे काम करना चाहिए।
मैंने इन सभी मानदंडों को एक गूगल स्प्रेडशीट में रखा है, ताकि जब आपको प्रतीत होता है कि समान जेम की एक भारी संख्या से चुनना है, तो आप आसानी से उनकी तुलना कर सकें। आप इसे यहां प्राप्त कर सकते हैं।