7.0.0.rc1 है , पहला रिलीज़ उम्मीदवार। बेसकैंप, HEY, Github, और Shopify सभी उत्पादन में रेल्स 7 अल्फा चला रहे हैं, इसलिए हम उम्मीद कर सकते हैं कि रिलीज़ उम्मीदवार भी काफी स्थिर होगा। <पी> इस पोस्ट में, हम रेल्स 7 द्वारा लाए जाने वाले कुछ नए फीचर्स और बदलावों पर नजर डालेंगे। नोड और वेबपैक आवश्यक नहीं
<पी> हाँ, आपने सही पढ़ा! रेल्स 7 में जावास्क्रिप्ट को अब NodeJS या वेबपैक की आवश्यकता नहीं होगी। और आप अभी भी npm पैकेज का उपयोग कर सकते हैं। <पी> बैबेल के साथ ES6 को ट्रांसपिलिंग करने और वेबपैक के साथ बंडल करने के लिए बहुत अधिक सेटअप की आवश्यकता होती है। जबकि रेल्स नेWebpacker के साथ इसका काफी अच्छा समर्थन किया रत्न, इससे बहुत सारा बोझ आ गया, इसे समझना और इसमें कोई बदलाव करना कठिन था, खासकर अपग्रेडेबिलिटी बनाए रखते हुए। <पी> अब, rails new के साथ बनाए गए नए ऐप्स के लिए डिफ़ॉल्ट importmaps-rails के माध्यम से आयात मानचित्रों का उपयोग करना है रत्न। package.json लिखने के बजाय और npm के साथ निर्भरताएँ स्थापित करना या yarn , आप ./bin/importmap का उपयोग करते हैं निर्भरता को पिन (या अनपिन या अपडेट) करने के लिए सीएलआई। <पी> उदाहरण के लिए, date-fns इंस्टॉल करने के लिए : <पी> इससे config/importmap.rb में एक लाइन जुड़ जाएगी जैसे: <पी> अपने जावास्क्रिप्ट कोड में, आप हर चीज़ का उपयोग वैसे ही जारी रख सकते हैं जैसे आप करते थे: <पी> इस सेटअप में ध्यान रखने योग्य एक बात यह है कि आप जो लिखते हैं और ब्राउज़र को जो मिलता है, उसके बीच कोई अंतर नहीं है। अधिकांश भाग के लिए, यह ठीक है क्योंकि अब सभी ब्राउज़र ES6 को आउट-ऑफ़-बॉक्स समर्थन देते हैं। <पी> लेकिन इसका मतलब यह भी है कि आप टाइपस्क्रिप्ट या JSX का उपयोग नहीं कर पाएंगे क्योंकि उन्हें उपयोग से पहले JS में ट्रांसपिलेशन की आवश्यकता होती है। <पी> इसलिए, यदि आप JSX के साथ रिएक्ट का उपयोग करना चाहते हैं, तो आपको अभी भी एक अलग सेटअप (वेबपैक/रोलअप/एसबिल्ड का उपयोग करके) पर वापस जाना होगा। <पी> रेल्स 7 आपके लिए यह कर सकता है. आपको बस अपनी चुनी हुई रणनीति के साथ एक कमांड की आवश्यकता है: टर्बोलिंक्स और यूजेएस को टर्बो और स्टिमुलस द्वारा प्रतिस्थापित किया गया
<पी> रेल्स 7 के साथ जेनरेट किए गए एप्लिकेशन को टर्बोलिंक्स और यूजेएस के बजाय डिफ़ॉल्ट रूप से टर्बो और स्टिमुलस (हॉटवायर से) मिलेगा। हॉटवायर एक नया दृष्टिकोण है जो वायर पर HTML भेजकर DOM को तेज़ अपडेट प्रदान करता है।डेटाबेस परत पर एन्क्रिप्शन
<पी> रेल्स 7encrypts का उपयोग करके कुछ डेटाबेस फ़ील्ड को एन्क्रिप्टेड के रूप में चिह्नित करने की अनुमति देता है ActiveRecord::Base पर विधि . इसका मतलब है कि प्रारंभिक सेटअप के बाद, आप इस तरह कोड लिख सकते हैं: <पी> आप किसी अन्य विशेषता की तरह एन्क्रिप्टेड विशेषताओं का उपयोग जारी रख सकते हैं। रेल्स 7 इसे डेटाबेस और आपके एप्लिकेशन के बीच स्वचालित रूप से एन्क्रिप्ट और डिक्रिप्ट करेगा। <पी> लेकिन इसमें थोड़ी विचित्रता है:जब तक आप deterministic: true पास नहीं कर लेते, तब तक आप उस फ़ील्ड द्वारा डेटाबेस से क्वेरी नहीं कर सकते। encrypts का विकल्प विधि। नियतिवादी मोड डिफ़ॉल्ट गैर-नियतात्मक मोड की तुलना में कम सुरक्षित है, इसलिए इसका उपयोग केवल उन विशेषताओं के लिए करें जिनकी आपको क्वेरी करने की आवश्यकता है। अतुल्यकालिक पूछताछ
<पी> अब एकload_async है वह विधि जिसका उपयोग आप पृष्ठभूमि में परिणाम प्राप्त करने के लिए डेटा क्वेरी करते समय कर सकते हैं। यह विशेष रूप से महत्वपूर्ण है जब आपको नियंत्रक कार्रवाई से कई असंबंधित क्वेरी लोड करने की आवश्यकता होती है। आप चला सकते हैं: <पी> यह एक ही समय में पृष्ठभूमि में दोनों क्वेरी सक्रिय कर देगा। इसलिए, यदि प्रत्येक क्वेरी में 200ms लगते हैं, तो डेटा लाने में लगने वाला कुल समय 400ms के बजाय ~200ms है, यदि उन्हें क्रमिक रूप से प्राप्त किया जाता है। रेल 7 के लिए ज़िटवर्क मोड
<पी> यह उन पुराने अनुप्रयोगों के लिए एक महत्वपूर्ण बदलाव है जो अभी भी क्लासिक लोडर चलाते हैं। सभी रेल्स 7 अनुप्रयोगों को ज़िटवर्क मोड का उपयोग करना चाहिए, लेकिन स्विच बहुत आसान है। संपूर्ण Zeitwerk अपग्रेड गाइड देखें।अन्य रेल 7 अपडेट
नौकरियों को असीमित बार पुनः प्रयास करें
<पी> ActiveJob अब:unlimited पास करने की अनुमति देता है attempts के रूप में retry_on पर पैरामीटर . रेल्स अधिकतम संख्या में प्रयासों के बिना कार्य का प्रयास जारी रखेगी। नामांकित वेरिएंट
<पी> अब आपActiveStorage पर वेरिएंट को नाम दे सकते हैं प्रत्येक एक्सेस पर आकार निर्दिष्ट करने के बजाय। HTML विशेषताओं में हैश
<पी> एक नयाtag.attributes है दृश्यों में उपयोग के लिए विधि जो हैश को HTML विशेषताओं में अनुवादित करती है: <पी> उत्पादन करेगा रूबी debug
<पी> डिबगिंग के लिए नया डिफ़ॉल्ट byebug से बदल गया है debug पर रत्न. <पी> byebug पर कॉल करने के बजाय , अब आपको debugger पर कॉल करना होगा डिबगिंग सत्र में प्रवेश करने के लिए कोड में। sole के साथ एकल रिकॉर्ड दर्ज करें
<पी> रिकॉर्ड पूछते समय, अब आप sole पर कॉल कर सकते हैं या find_sole_by (first के बजाय या find_by ) जब आप यह दावा करना चाहते हैं कि क्वेरी केवल एक ही रिकॉर्ड से मेल खानी चाहिए। किसी एसोसिएशन की उपस्थिति/अनुपस्थिति की जांच करें
<पी> अब हमwhere.associated(:association) का उपयोग कर सकते हैं शामिल होने और किसी आईडी के अस्तित्व की जांच करने के बजाय यह जांचने के लिए कि क्या कोई एसोसिएशन रिकॉर्ड पर मौजूद है। नियंत्रक क्रियाओं से उत्पन्न फ़ाइलों को स्ट्रीम करें
<पी> अब आपsend_stream का उपयोग कर सकते हैं किसी फ़ाइल को तुरंत स्ट्रीम करना शुरू करने के लिए नियंत्रक क्रिया के अंदर। <पी> यह उपयोगकर्ता को तत्काल (आंशिक) प्रतिक्रिया प्रदान करता है ताकि उन्हें पता चले कि कुछ हो रहा है और यदि आप हेरोकू पर तैनात करते हैं तो उन्हें अतिरिक्त लाभ होगा। <पी> चूँकि फ़ाइल तुरंत स्ट्रीम होना शुरू हो जाएगी, हेरोकू कनेक्शन समाप्त नहीं करेगा। इसका मतलब है कि आपको 30 सेकंड से अधिक समय लेने वाली वन-ऑफ़ फ़ाइलों को उत्पन्न करने के लिए पृष्ठभूमि नौकरियों का सहारा लेने की आवश्यकता नहीं है। रेल 7 में अपग्रेड करना
<पी> रेल के पिछले संस्करणों की तरह, अपग्रेड करना सरल है। हालाँकि हमारे पास अभी तक कोई आधिकारिक अपग्रेड गाइड नहीं है, चरण वही रहेंगे:- Gemfile (
7.0.0.rc1) में रेल संस्करण संख्या बदलें प्रकाशन तिथि के अनुसार) औरbundle updateचलाएँ . -
bundle exec rails app:updateचलाएँ . इंटरैक्टिव सीएलआई का पालन करें और आवश्यकतानुसार फ़ाइलें जोड़ें/प्रतिस्थापित/संशोधित करें। - अपने परीक्षण चलाएं और सत्यापित करें कि सब कुछ अपेक्षा के अनुरूप काम करता है।
समाप्ति
<पी> आप रेल्स 7 रिलीज़ नोट्स में बग फिक्स, फीचर्स और बदलावों की पूरी सूची देख सकते हैं। ये फिलहाल व्यापक नहीं हैं, लेकिन हम उम्मीद कर सकते हैं कि इन्हें जल्द ही अपडेट किया जाएगा। <पी> यदि आप अभी भी रेल्स 6 या उससे नीचे का संस्करण चला रहे हैं, तो कृपया ध्यान दें कि रेल्स 7 की अंतिम रिलीज के साथ, रेल्स 6.1 "केवल सुरक्षा मुद्दे" मोड में प्रवेश करेगा और अब बग फिक्स प्राप्त नहीं करेगा। यह रेल्स 5.2 के लिए ईओएल को भी चिह्नित करेगा, क्योंकि इसे अब कोई फिक्स प्राप्त नहीं होगा। <पी> कोडिंग का आनंद लें! <पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! पी>