Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby on Rails 8 का अन्वेषण: नई सुविधाएं और संवर्द्धन

पहला Rails 8 बीटा आधिकारिक तौर पर जारी किया गया है, जो सुविधाओं, बग फिक्स, और सुधारों का एक रोमांचक सेट लाता है। यह संस्करण Rails 7.2 की नींव पर निर्माण करता है, जबकि Rails विकास को और भी अधिक उत्पादक और आनंददायक बनाने के लिए नई सुविधाओं और अनुकूलन का परिचय देता है।

मुख्य आकर्षण में परेशानी मुक्त तैनाती के लिए Kamal 2 के साथ एकीकरण, नए डिफ़ॉल्ट एसेट पाइपलाइन के रूप में Propshaft का परिचय, और व्यापक ActiveRecord संवर्द्धन शामिल हैं। Rails 8 कई SQLite एकीकरण उन्नयन भी लाता है जो इसे प्रोडक्शन उपयोग के लिए एक व्यवहार्य विकल्प बनाते हैं।

आइए गोता लगाएं और पता लगाएं कि Rails 8 को क्या पेशकश करनी है!

Kamal 2 और Thruster के साथ सहज तैनाती

Rails 8 Kamal 2 और Thruster के साथ आपके एप्लिकेशन को तैनात करना सरल बनाता है।

Kamal 2 मैनेज्ड क्लाउड सेवाओं और प्लेटफॉर्म एज अ सर्विस (PaaS) प्लेटफॉर्म पर निर्भरता की आवश्यकता को कम करता है, जिससे क्लाउड VMs, बेयर मेटल सर्वर, या VPS वातावरण में त्वरित और आसान तैनाती सक्षम होती है — मिनटों में।

एक कमांड (kamal setup) के साथ, आप एक मानक लिनक्स बॉक्स पर प्रोडक्शन-रेडी Rails वातावरण सेट कर सकते हैं, जिससे तैनाती दोनों आसान और लागत-प्रभावी हो जाती है।

Kamal 2 Thruster के साथ भी एकीकृत होता है, जो विशेष रूप से Rails के लिए बनाया गया एक कस्टम प्रॉक्सी है जो शून्य-डाउनटाइम तैनाती, HTTP/2 समर्थन, Let's Encrypt के साथ स्वचालित SSL, Gzip संपीड़न, और जटिल सेटअप के बिना एक ही सर्वर पर कई ऐप्स की आसान होस्टिंग को सक्षम बनाता है।

Kamal 2 और Thruster के साथ, Rails 8 ऐप्स को तैनात करना पहले से कहीं ज्यादा आसान बनाता है। और यदि आप एक अलग तैनाती सेटअप पसंद करते हैं, तो आप --skip-kamal फ्लैग का उपयोग करके अपने मौजूदा वर्कफ़्लो को बनाए रख सकते हैं।

Solid एडाप्टर्स के साथ दुबला Rails तैनाती

Rails 8 में बड़े सुधारों में से एक सामान्य वेब एप्लिकेशन आवश्यकताओं को लागू करने के लिए आवश्यक अतिरिक्त सेवाओं की संख्या को कम करके सरल तैनाती है।

परंपरागत रूप से, यदि आपको जॉब क्यू, कैशिंग, और पब/सब मैसेजिंग जैसी सुविधाओं की आवश्यकता होती, तो आप PostgreSQL जैसे डेटाबेस का उपयोग सहायक कार्यों के लिए Redis के साथ करते।

Rails 8 के साथ, आप केवल SQLite के साथ यह सब संभाल सकते हैं, तीन नए डेटाबेस-समर्थित एडाप्टर्स के लिए धन्यवाद: Solid Cable, Solid Cache, और Solid Queue।

  1. Solid Cable प्रोडक्शन में Rails का नया डिफ़ॉल्ट Action Cable एडाप्टर है और इसका मतलब है कि आप Redis पर सामान्य निर्भरता को छोड़ सकते हैं। यह पब/सब सर्वर के रूप में कार्य करता है, SQLite के माध्यम से फास्ट पोलिंग का उपयोग करके ऐप और कनेक्टेड क्लाइंट्स के बीच संदेशों को रिले करता है। पोलिंग के बावजूद, Solid Cable का प्रदर्शन अधिकांश स्थितियों में Redis के बराबर है।

  2. Solid Cache कैशिंग के लिए RAM के बजाय डिस्क स्टोरेज का उपयोग करके Redis की आवश्यकता को प्रतिस्थापित करता है। यह दृष्टिकोण बहुत बड़े, अधिक लागत-प्रभावी कैश की अनुमति देता है जो लंबे समय तक बने रहते हैं और प्रदर्शन का त्याग किए बिना अधिक अनुरोधों को संभालते हैं। यह गोपनीयता आवश्यकताओं को पूरा करने के लिए एन्क्रिप्टेड स्टोरेज और रिटेंशन नीतियों का भी समर्थन करता है।

  3. Solid Queue Active Job बैकग्राउंड प्रोसेसिंग के लिए Redis को प्रतिस्थापित करता है, कुशल जॉब हैंडलिंग के लिए FOR UPDATE SKIP LOCKED तंत्र का उपयोग करता है (PostgreSQL, MySQL, या SQLite के साथ संगत)। इसमें कनकरेंसी कंट्रोल, रीट्राई, और आवर्ती जॉब्स जैसी आवश्यक सुविधाएं शामिल हैं, और इसने खुद को HEY में साबित किया है, जहां यह अब प्रति दिन 20 मिलियन जॉब्स का प्रबंधन करता है।

ये तीन एडाप्टर्स एक सरल विचार के आसपास डिज़ाइन किए गए हैं: आधुनिक SSDs और NVMe ड्राइव कई कार्यों को संभालने के लिए पर्याप्त तेज़ हैं जिनके लिए पहले इन-मेमोरी समाधानों की आवश्यकता होती थी। इन तेज़ ड्राइव्स में टैप करके, Rails Redis जैसे अलग RAM-आधारित उपकरणों की आवश्यकता को समाप्त कर देता है।

SQLite प्रोडक्शन के लिए तैयार है

Rails 8 SQLite को एक हल्के डेवलपमेंट टूल से प्रोडक्शन उपयोग के लिए एक विश्वसनीय विकल्प में ले जाता है, SQLite एडाप्टर और Ruby ड्राइवर पर व्यापक काम के लिए धन्यवाद।

ऊपर चर्चा किए गए सॉलिड एडाप्टर्स के परिचय के साथ, SQLite अब Action Cable, Rails.cache, और Active Job को प्रभावी ढंग से शक्ति प्रदान करने की क्षमता रखता है, जिससे इसकी भूमिका केवल प्रोटोटाइपिंग या टेस्टिंग वातावरण से आगे बढ़ जाती है।

Rails 8 में SQLite एकीकरण के कुछ प्रमुख सुधार यहां दिए गए हैं:

  • फुल-टेक्स्ट खोज और वर्चुअल टेबल अब create_virtual_table का उपयोग करके समर्थित हैं।
  • एडाप्टर अब उन्नत डेटा सीडिंग प्रदर्शन के लिए बल्क इन्सर्ट फिक्स्चर की अनुमति देता है।
  • लेनदेन डिफ़ॉल्ट रूप से IMMEDIATE मोड में होते हैं ताकि कनकरेंसी में सुधार हो।
  • SQLite3::BusyException को ActiveRecord::StatementTimeout में अनुवाद करके उन्नत त्रुटि प्रबंधन।

Propshaft के साथ एसेट पाइपलाइन के लिए एक नया युग

Rails 8 Propshaft को नए एसेट पाइपलाइन डिफ़ॉल्ट के रूप में पेश करता है, जो लंबे समय से चले आ रहे Sprockets सिस्टम को प्रतिस्थापित करता है। Sprockets ने Rails डेवलपर्स की एक दशक से अधिक समय तक अच्छी सेवा की, लेकिन इसे एक अलग युग में डिज़ाइन किया गया था — JavaScript बिल्ड टूल्स के विस्फोट और आधुनिक ब्राउज़र सुधारों से पहले।

Propshaft आज के डेवलपर्स की मुख्य जरूरतों के आसपास निर्मित एसेट्स को प्रबंधित करने के लिए एक सरल, आधुनिक दृष्टिकोण को दर्शाता है। इसका उद्देश्य सीधा है: एसेट्स के लिए एक स्पष्ट पथ प्रदान करना और कैशिंग के लिए डाइजेस्ट स्टैम्प लागू करना।

Sprockets के विपरीत, जिसने कई अतिरिक्त कार्य संभाले, Propshaft केवल वही ध्यान केंद्रित करता है जो आवश्यक है, नए Rails दर्शन के साथ स्वाभाविक रूप से फिट होता है जिसमें एसेट पाइपलाइन को दुबला रखना है (जबकि जटिल JavaScript हैंडलिंग को Esbuild या Vite जैसे विशेष टूल्स पर छोड़ दिया जाता है)।

बिल्ट-इन ऑथेंटिकेशन को सरल बनाया गया

Rails वर्षों से ऑथेंटिकेशन के प्रमुख घटकों का निर्माण कर रहा है, Rails 5 में has_secure_password से लेकर Rails 7.1 में normalizes, generates_token_for और authenticate_by तक।

Rails 8 के साथ, ये सभी घटक आपको एक सुरक्षित, सत्र-आधारित ऑथेंटिकेशन सिस्टम बनाने के लिए एक सीधा प्रारंभिक बिंदु देने के लिए एक साथ आते हैं।

एक कमांड चलाकर, आप डेटाबेस-समर्थित सत्र और पासवर्ड रीसेट कार्यक्षमता के साथ एक ऑथेंटिकेशन सिस्टम के लिए सभी आवश्यक चीजें सेट कर सकते हैं:



यह कमांड प्रमुख फाइलें उत्पन्न करता है, जिनमें मॉडल, कंट्रोलर, मेलर, और व्यू शामिल हैं:



यह प्रभावी रूप से आपको सुरक्षित, प्रोडक्शन-रेडी ऑथेंटिकेशन के लिए फास्ट ट्रैक पर रखता है। बस इतना ही बचा है कि अपने एप्लिकेशन की जरूरतों के लिए अनुकूलित एक यूजर साइन-अप फ्लो को एकीकृत किया जाए।

नया स्क्रिप्ट फोल्डर और जेनरेटर

Rails 8 एक नया script फोल्डर पेश करता है जो वन-ऑफ या सामान्य-उद्देश्य स्क्रिप्ट्स को रखने के लिए समर्पित है, जैसे डेटा माइग्रेशन, क्लीनअप कार्य, या अन्य उपयोगिता ऑपरेशन। यह जोड़ इन स्क्रिप्ट्स को बड़े करीने से व्यवस्थित करने में मदद करता है, उन्हें आपके मुख्य एप्लिकेशन लॉजिक से अलग रखता है।

स्क्रिप्ट निर्माण को आसान बनाने के लिए, एक नया स्क्रिप्ट जेनरेटर उपलब्ध है। आप एक साधारण कमांड के साथ स्क्रिप्ट उत्पन्न कर सकते हैं:



ये कमांड संबंधित स्क्रिप्ट फाइलें बनाते हैं, जिन्हें आप तब निष्पादित कर सकते हैं:



यह सुव्यवस्थित दृष्टिकोण आपके एप्लिकेशन को व्यवस्थित रखता है और कस्टम स्क्रिप्ट्स को संभालना अधिक सुविधाजनक और अनुरक्षणीय बनाता है।

Active Record सुधारों की भरमार

Rails 8 में Active Record में भी बड़े संवर्द्धन देखे गए हैं जो प्रदर्शन में सुधार, माइग्रेशन को सरल बनाने, समस्या निवारण में सुधार, और जटिल डेटाबेस उपयोग के मामलों के लिए बेहतर समर्थन प्रदान करते हैं।

इस नवीनतम संस्करण में पेश किए गए कुछ प्रमुख परिवर्तन नीचे दिए गए हैं:

  • Rails 8 अब PostgreSQL में float4 और float8 के बीच अंतर करता है।
  • drop_table अब एक साथ कई टेबल्स को ड्रॉप करने का समर्थन करता है।
  • PostgreSQL के साथ टेबल बनाते समय उन्नत विकल्पों के लिए समर्थन, जिसमें विरासत और पार्टीशनिंग शामिल हैं।
  • उन्नत डेटा सीडिंग प्रदर्शन के लिए फिक्स्चर के बल्क इन्सर्ट अब समर्थित हैं।
  • एक नए डेटाबेस को माइग्रेट करना अब माइग्रेशन चलाने से पहले डेटाबेस स्कीमा लोड करके शुरू होता है।
  • create_schema और drop_schema ऑपरेशन अब प्रतिवर्ती हैं।
  • Rails 8 अब datetime with precision जैसे उन्नयन के कारण MySQL 5.6.4 या बाद के संस्करण की आवश्यकता है।
  • क्वेरी लॉग टैग डेवलपमेंट वातावरण में डिफ़ॉल्ट रूप से सक्षम हैं ताकि SQL स्टेटमेंट्स को एप्लिकेशन कोड पर वापस ट्रेस किया जा सके और पहचाना जा सके कि कौन सा डेटाबेस उपयोग में है।

समापन

Rails 8 प्रभावशाली अपडेट की एक श्रृंखला पेश करता है, Kamal के साथ आसान तैनाती और एक आधुनिक एसेट पाइपलाइन से लेकर महत्वपूर्ण ActiveRecord संवर्द्धन और SQLite के लिए बेहतर प्रोडक्शन क्षमताओं तक।

ये प्रगति न केवल डेवलपर उत्पादकता को बढ़ाती है बल्कि आधुनिक सर्वोत्तम प्रथाओं के साथ भी संरेखित होती है, जिससे आप इन्फ्रास्ट्रक्चर जटिलताओं से निपटने के बजाय अपने एप्लिकेशन के निर्माण पर ध्यान केंद्रित कर सकते हैं।

सभी नई सुविधाओं, अनुकूलन, और परिवर्तनों की विस्तृत सूची के लिए, आधिकारिक Rails 8 रिलीज़ नोट्स देखें।

यदि आप Rails में योगदान करने में शामिल होना चाहते हैं, तो खुले मुद्दों का पता लगाने और योगदान दिशानिर्देशों की समीक्षा करने के लिए Rails GitHub रिपॉजिटरी पर जाएं।

पढ़ने के लिए धन्यवाद!

P.S. यदि आप Ruby Magic पोस्ट पढ़ना चाहते हैं जैसे ही वे प्रेस से निकलते हैं, तो हमारे Ruby Magic न्यूज़लेटर की सदस्यता लें और कभी भी एक भी पोस्ट मिस न करें!

Ruby on Rails 8 का अन्वेषण: नई सुविधाएं और संवर्द्धन

Damilola Olatunji

Damilola नाइजीरिया के लागोस में स्थित एक फ्रीलांस टेक्निकल राइटर और सॉफ्टवेयर डेवलपर हैं। वे JavaScript और Node.js में विशेषज्ञ हैं, और डेवलपर्स के लिए संक्षिप्त और व्यावहारिक आलेख देने का लक्ष्य रखते हैं। जब लिख या कोड नहीं कर रहे होते, तो वे पढ़ना, गेम खेलना, और यात्रा करना पसंद करते हैं।

Damilola Olatunji के सभी आलेख

  1. HTML DOM console.clear() मेथड HTML DOM console.clear() मेथड

    HTML DOM console.clear() मेथड का उपयोग कंसोल को क्लियर करने के लिए किया जाता है। console.clear() मेथड कंसोल में Console was cleared मैसेज भी लिखेगा और सभी पिछले कंसोल कंटेंट को क्लियर कर देगा। यह मेथड सभी ब्राउज़र्स द्वारा पूरी तरह से सपोर्टेड है।सिंटैक्स (Syntax)console.clear() मेथड का सिंटैक्स:con

  1. C++ का उपयोग करके एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें C++ का उपयोग करके एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करने के दृष्टिकोणों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृतिक संख्याओं के एक सेट पर, हमें रिफ्लेक्सिव रिलेशंस की संख्या निर्धारित करनी है।रिफ्लेक्सिव रिलेशन - एक सेट A में एक रिलेशन को रिफ्लेक्सिव कहा जाता ह

  1. Android ऐप में होम बटन कैसे ओवरराइड करें? Android ऐप में होम बटन कैसे ओवरराइड करें?

    होम बटन दबाने का पता लगाने के लिए onUserLeaveHint() का उपयोग - लेकिन होम बटन को पूरी तरह ओवरराइड/ब्लॉक नहीं किया जा सकता। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns: