रेल्स 8 आखिरकार यहां है, और यह काफी रोमांचक तरीके से चीजों को हिला रहा है। यदि आप पहले से ही रेल्स समुदाय में सक्रिय हैं, तो आपने टैगलाइन सुनी होगी: "नो PaaS रिक्वायर्ड।"
यह एक असामान्य (लेकिन आश्चर्यजनक नहीं) मिशन है — यह रिलीज पूरी तरह से आपके रेल्स ऐप्स को पूरी तरह से चित्रित प्लेटफॉर्म-एज-ए-सर्विस (PaaS) की आवश्यकता के बिना डिप्लॉय करना आसान बनाने के बारे में है।
प्लेटफॉर्म डेवलपर्स को उनके कोड को चलाने वाले अंतर्निहित इंफ्रास्ट्रक्चर को प्रबंधित किए बिना अपने ऐप्स को वेब पर लाने का एक तरीका प्रदान करते हैं। Heroku, Render, Fly, और Railway जैसे व्यवसाय रेल्स समुदाय में लोकप्रिय विकल्प रहे हैं। डेवलपर्स अक्सर प्लेटफॉर्म द्वारा प्रदान किए जाने वाले डेवलपर अनुभव के लिए कुछ अतिरिक्त होस्टिंग लागतों का व्यापार करने को तैयार होते हैं, लेकिन यह रेल्स रिलीज उस व्यापार को थोड़ा कम आकर्षक बनाने की तलाश में है।
इस लेख में, हम उन नई और बेहतर सुविधाओं की समीक्षा करेंगे जिन्होंने इसे संभव बनाया है। सॉलिड कैश, सॉलिड क्यू, और सॉलिड केबल जैसी चीजें रेल्स 8 में नई हैं और कुछ निर्भरताओं को हटा देती हैं जिनकी हमें पहले आवश्यकता होती थी (जैसे Redis)। Kamal 2 अब डिप्लॉयमेंट के लिए डिफ़ॉल्ट है, और नए प्रमाणीकरण जनरेटर हैं जो एक और जेम की आवश्यकता को हटाते हैं। आइए इसमें गोता लगाएं।
रेल्स 8 ने क्या बदला?
रेल्स (और विशेष रूप से रेल्स 8) वास्तव में चाहता है कि आपके लिए प्लेटफॉर्म के लिए भुगतान किए बिना एप्लिकेशन को प्रोडक्शन में भेजना आसान हो। इस रिलीज में अधिकांश परिवर्तन उस मिशन के इर्द-गिर्द घूमते हैं - रेल्स एप्लिकेशन को स्वयं होस्ट करने में लगने वाले काम को कम करना, नो PaaS रिक्वायर्ड!
आइए प्रत्येक प्रमुख परिवर्तन पर करीब से नज़र डालें।
Redis-मुक्त कैशिंग के लिए सॉलिड कैश
रेल्स चीजों को कैश करने के लिए ActiveSupport का उपयोग करता है, जो वेब ऐप्स को प्रदर्शनकारी बनाने के लिए महत्वपूर्ण है। ऐतिहासिक रूप से लोगों ने कैशिंग के लिए Redis पर भरोसा किया है क्योंकि यह तेज और विश्वसनीय है।
सॉलिड कैश कुछ समय पहले ActiveSupport के लिए एक Redis-मुक्त कैश स्टोर के रूप में जारी किया गया था। यह कुछ समय से 37सिग्नल्स और अन्य में उपयोग में है, और रेल्स अब इसे डिफ़ॉल्ट विकल्प के रूप में प्रचारित कर रहा है। क्योंकि यह कैश स्टोर के लिए RAM के बजाय डेटाबेस (डिफ़ॉल्ट रूप से SQLite) का उपयोग करता है, आपको सामान्य रूप से जितना कैश कर सकते हैं उससे कहीं अधिक कैश करने का अतिरिक्त बोनस मिलता है। डेटाबेस स्पेस RAM से सस्ता है, इसलिए जबकि डेटाबेस का उपयोग कैशिंग सिस्टम को बैक करने के लिए RAM का उपयोग करने की तुलना में धीमा है, अधिक चीजों को लंबे समय तक कैश करने की क्षमता कुछ ऐप्स को और भी अधिक प्रदर्शनकारी बना सकती है।
यह प्रदर्शन ट्रेडऑफ कुछ उपयोग के मामलों के लिए बहुत अच्छा है लेकिन दूसरों के लिए आदर्श नहीं हो सकता है, इसलिए अन्य कैश स्टोर में से किसी एक का उपयोग करना अभी भी आसान है। डिफ़ॉल्ट रूप से Redis या Memcached की आवश्यकता को हटाकर आप रेल्स के "नो PaaS रिक्वायर्ड" मिशन के एक कदम करीब पहुंच जाते हैं।
Redis-मुक्त बैकग्राउंड जॉब्स के लिए सॉलिड क्यू
आप शायद पहले से ही जानते हैं कि रेल्स ActiveJob लाइब्रेरी का उपयोग आपके लिए बैकग्राउंड जॉब्स लिखना और चलाना आसान बनाने के लिए करता है। कैशिंग की तरह, रेल्स आपको वह बैकएंड चुनने देता है जो ActiveJob को शक्ति देता है। कई लोग Sidekiq या Good Job से प्यार करते हैं, लेकिन आज अधिकांश विकल्पों में दो समस्याएं हैं:
- वे आयात करने, प्रबंधित करने, और संभावित रूप से भुगतान करने के लिए एक और डिपेंडेंसी हैं
- वे Redis जैसी एक और सर्विस पर निर्भर हैं (जिसे आपको होस्ट, प्रबंधित, और संभावित रूप से भुगतान करना होगा)
सॉलिड क्यू Redis पर भरोसा किए बिना बैकग्राउंड जॉब्स को प्रबंधित करके दोनों को हल करना चाहता है। यदि आप Sidekiq या Redis पर निर्भर एक अन्य क्यूइंग प्रदाता का उपयोग कर रहे हैं, तो सॉलिड क्यू एक विकल्प है जो जटिलता को कम करता है और होस्टिंग को आसान बनाता है। सॉलिड कैश की तरह, सॉलिड क्यू बैकग्राउंड जॉब्स को ट्रैक करने के लिए RAM के बजाय एप्लिकेशन के डेटाबेस का उपयोग करता है। यह एक और विशेषता है जिसे रेल्स अब डिफ़ॉल्ट रूप से प्रदान कर रहा है ताकि डिपेंडेंसीज को कम किया जा सके और प्रोडक्शन डिप्लॉयमेंट को सरल बनाया जा सके।
Redis-मुक्त वेब सॉकेट्स के लिए सॉलिड केबल
रेल्स डेवलपर्स के लिए रियल-टाइम सुविधाओं के लिए वेब सॉकेट्स का उपयोग करना आसान बनाने के लिए Action Cable का उपयोग करता है। ऐतिहासिक रूप से, इसके लिए Redis की आवश्यकता होती है। आप शायद अनुमान लगा सकते हैं कि यह कहां जा रहा है!
'सॉलिड' थीम के साथ रखते हुए, रेल्स 8 एक और डिफ़ॉल्ट डेटाबेस-समर्थित एडाप्टर के साथ आता है। आपको इसका उपयोग करने की आवश्यकता नहीं है, लेकिन यदि आप वेब सॉकेट्स का उपयोग करना चाहते हैं और Redis को कॉन्फ़िगर और बनाए रखने से बचना चाहते हैं, तो यह एक उत्कृष्ट फर्स्ट-पार्टी विकल्प है। सॉलिड कैश और सॉलिड क्यू के साथ, सॉलिड केबल रेल्स एप्लिकेशन को PaaS के बिना शिप करना और भी आसान बनाता है, Redis की आवश्यकता को हटाकर और डेटाबेस पर भरोसा करके।
आसान डिप्लॉयमेंट के लिए Kamal 2
रेल्स 8 में अगली नई सुविधा सॉलिड एडाप्टर्स से काफी अलग है। फिर भी, Kamal (और विशेष रूप से Kamal 2) आपके अपने हार्डवेयर के साथ एप्लिकेशन को शिप करना अधिक सीधा बनाता है। क्योंकि Docker ने सॉफ्टवेयर को मॉड्यूलराइज़ करना आसान बना दिया है, भाषा की परवाह किए बिना Docker कंटेनर्स को शिप करने के लिए एक सॉफ्टवेयर का होना पूरी तरह से समझ में आता है।
मेरी राय में, Kamal, भले ही बाकी रेल्स 8 के साथ जोड़ा गया हो, अधिकांश प्लेटफॉर्म के डेवलपर अनुभव को वास्तव में छू नहीं सकता। फिर भी, यह आपके अपने वेब सर्वर पर सॉफ्टवेयर शिप करना बहुत आसान बनाता है, भले ही आप रेल्स का उपयोग न कर रहे हों! यह PaaS के लिए पूर्ण प्रतिस्थापन नहीं हो सकता है, लेकिन एक बार आपका प्रारंभिक सेटअप पूरा हो जाने पर, kamal deploy चलाना स्वयं डिप्लॉयमेंट करने पर एक बड़ा सुधार है।
प्रमाणीकरण जनरेटर (Devise के बिना!)
यदि आप एक रेल्स ऐप बना रहे हैं जिसमें उपयोगकर्ता हैं, तो आपको शायद प्रमाणीकरण की आवश्यकता होगी। अब तक, रेल्स में फ्रेमवर्क के हिस्से के रूप में प्रमाणीकरण शामिल नहीं था। समुदाय के पास रेल्स डेवलपर्स को प्रमाणीकरण लिखने में मदद करने के लिए कई बेहतरीन समाधान हैं, जिनमें से सबसे लोकप्रिय Devise है।
रेल्स 8 प्रमाणीकरण जनरेटर के साथ आता है। यह एक पूर्ण प्रमाणीकरण प्रणाली नहीं है, लेकिन यह आपको महत्वपूर्ण भागों (जैसे सुरक्षा) को सही करने में मदद करने के लिए पर्याप्त है। डेवलपर पर लॉगिन और उपयोगकर्ता साइन-अप फ्लो को संभालने के लिए व्यू लिखने का निर्भर है, लेकिन जनरेटर सत्र, पासवर्ड प्रमाणीकरण, और यहां तक कि पासवर्ड ईमेल को संभालेंगे। DHH ने इस बारे में थोड़ी बात की है कि प्रमाणकर्ताओं में व्यूज को बाहर करने का विकल्प एक जानबूझकर किया गया है जिसका उद्देश्य रेल्स ऐप्स को सभी एक जैसा दिखने से रोकना है।
इन नए जनरेटर्स का जोड़ सीधे एप्लिकेशन शिपिंग को सरल नहीं करता है, लेकिन यह वेब एप्लिकेशन बनाने में एक आम समस्या के लिए एक फर्स्ट-पार्टी समाधान प्रदान करता है जो रेल्स बहुत लंबे समय से गायब था।
एसेट पाइपलाइन के लिए Propshaft
रेल्स 8 में सबसे बड़े (हुड के तहत) परिवर्तनों में से एक डिफ़ॉल्ट एसेट पाइपलाइन के लिए Sprockets से Propshaft पर जाना है। रेल्स अभी भी Sprockets का समर्थन करता है यदि आप इसका उपयोग करना चाहते हैं या आवश्यकता है, लेकिन नए रेल्स 8 एप्लिकेशन Propshaft को डिफ़ॉल्ट करते हैं।
Propshaft एसेट्स को बंडल या मिनिफाई नहीं करने के बारे में बहुत राय रखता है। जैसे रेल्स PaaS को अनावश्यक बनाने की तलाश में है, यह जटिल बिल्ड पाइपलाइन्स को अनावश्यक बनाने की भी कोशिश कर रहा है। रेल्स 8 में कई अन्य नए डिफॉल्ट्स की तरह, आप Propshaft को रेल्स के पुराने संस्करणों के साथ उपयोग कर सकते हैं और अभी भी रेल्स 8 के लिए Sprockets का उपयोग कर सकते हैं!
SQLite और रेल्स
जबकि SQLite रेल्स का हिस्सा नहीं है, रेल्स इस रिलीज में SQLite पर और भी अधिक निर्भर है। SQLite एक सर्वरलेस डेटाबेस इंजन है, जो इसे Postgres जैसी किसी चीज़ की तुलना में सरल बनाता है। यदि आपका रेल्स एप्लिकेशन SQLite का उपयोग करता है, तो आपको अपने वेब प्रोसेस से अलग एक डेटाबेस प्रोसेस चलाने की आवश्यकता नहीं होगी। बेशक, यह रेल्स 8 के मिशन के साथ बहुत अधिक संरेखित है, वेब एप्लिकेशन को शिप करना सरल बनाने के लिए।
रेल्स 8 SQLite के लिए फर्स्ट-पार्टी सपोर्ट के साथ आता है, यह सुनिश्चित करते हुए कि यह आपकी पारंपरिक डेटाबेस आवश्यकताओं को संभालने और नए डेटाबेस-समर्थित सॉलिड एडाप्टर्स का समर्थन करने के लिए पर्याप्त शक्तिशाली है।
रेल्स 8 में सब कुछ प्लेटफॉर्म को कम आवश्यक बनाने के बारे में है
यदि आप किसी मौजूदा रेल्स ऐप को रेल्स 8 में अपग्रेड कर रहे हैं, तो अपग्रेड पूरा करने के लिए आपको बहुत कुछ करने की आवश्यकता नहीं है। केवल कुछ चीजें हटाई गई थीं, ज्यादातर Active Record में, जिसमें पहले से ही कुछ समय के लिए डिप्रिकेशन नोटिस थे। आप निश्चित रूप से, "रेल्स 8 में नया" सभी डिफॉल्ट्स का लाभ उठा सकते हैं ताकि अपने एप्लिकेशन डिप्लॉयमेंट को सरल बनाया जा सके, लेकिन यह वैकल्पिक है।
रेल्स 8 में सबसे बड़े बदलाव नए रेल्स ऐप्स के लिए हैं! नए रेल्स ऐप्स बैकग्राउंड जॉब्स के लिए सॉलिड क्यू, कैशिंग के लिए सॉलिड कैश, वेब सॉकेट्स के लिए सॉलिड केबल, एसेट पाइपलाइन के लिए Propshaft, और डिप्लॉयमेंट के लिए Kamal 2 को डिफ़ॉल्ट करेंगे।
रेल्स हाल ही में जटिलता को संपीड़ित करने और आधुनिक वेब ऐप्स बनाने के लिए एक पूर्ण-विशेषताओं वाला फ्रेमवर्क प्रदान करने के मिशन पर है। रेल्स 8 बनाने से आगे शिपिंग वेब ऐप्स में जाता है जबकि मौजूदा विकल्पों के साथ संगत रहता है।
आप रेल्स 8 डिफॉल्ट्स में से सभी, कुछ, या किसी का भी उपयोग कर सकते हैं और फिर भी एक प्लेटफॉर्म का उपयोग कर सकते हैं यदि आप उस डेवलपर अनुभव को पसंद करते हैं। लेकिन इस रिलीज का उद्देश्य आपको प्लेटफॉर्म को छोड़ने और अपने इंफ्रास्ट्रक्चर का अधिक स्वामित्व लेने का विकल्प देना है।
यदि आपने इस लेख का आनंद लिया, तो अधिक रूबी और रेल्स समाचार और ट्यूटोरियल सीधे अपने इनबॉक्स में प्राप्त करने के लिए हनीबैजर न्यूज़लेटर के लिए साइन अप करें!