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

रेल 7 का अनावरण:मुख्य विशेषताएं और आगामी सुधार

<पी> रेल्स 7 बिल्कुल नजदीक है। हमारे पास कोई निश्चित रिलीज़ डेट नहीं है, लेकिन यह क्रिसमस से पहले उपलब्ध होने की उम्मीद है, इसलिए बहुत समय नहीं है। इस पोस्ट के प्रकाशन का नवीनतम संस्करण 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 को तेज़ अपडेट प्रदान करता है।

डेटाबेस परत पर एन्क्रिप्शन

<पी> रेल्स 7 encrypts का उपयोग करके कुछ डेटाबेस फ़ील्ड को एन्क्रिप्टेड के रूप में चिह्नित करने की अनुमति देता है 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 में अपग्रेड करना

<पी> रेल के पिछले संस्करणों की तरह, अपग्रेड करना सरल है। हालाँकि हमारे पास अभी तक कोई आधिकारिक अपग्रेड गाइड नहीं है, चरण वही रहेंगे:

  1. Gemfile (7.0.0.rc1) में रेल संस्करण संख्या बदलें प्रकाशन तिथि के अनुसार) और bundle update चलाएँ .
  2. bundle exec rails app:update चलाएँ . इंटरैक्टिव सीएलआई का पालन करें और आवश्यकतानुसार फ़ाइलें जोड़ें/प्रतिस्थापित/संशोधित करें।
  3. अपने परीक्षण चलाएं और सत्यापित करें कि सब कुछ अपेक्षा के अनुरूप काम करता है।

समाप्ति

<पी> आप रेल्स 7 रिलीज़ नोट्स में बग फिक्स, फीचर्स और बदलावों की पूरी सूची देख सकते हैं। ये फिलहाल व्यापक नहीं हैं, लेकिन हम उम्मीद कर सकते हैं कि इन्हें जल्द ही अपडेट किया जाएगा।

<पी> यदि आप अभी भी रेल्स 6 या उससे नीचे का संस्करण चला रहे हैं, तो कृपया ध्यान दें कि रेल्स 7 की अंतिम रिलीज के साथ, रेल्स 6.1 "केवल सुरक्षा मुद्दे" मोड में प्रवेश करेगा और अब बग फिक्स प्राप्त नहीं करेगा। यह रेल्स 5.2 के लिए ईओएल को भी चिह्नित करेगा, क्योंकि इसे अब कोई फिक्स प्राप्त नहीं होगा।

<पी> कोडिंग का आनंद लें!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! रेल 7 का अनावरण:मुख्य विशेषताएं और आगामी सुधार

पुलकित गोयल

<पी> हमारे अतिथि लेखक पुलकित एक वरिष्ठ फुल-स्टैक इंजीनियर और सलाहकार हैं। अपने खाली समय में वह अपने ब्लॉग पर अपने अनुभवों के बारे में लिखते हैं।

<पी> सभी लेख पुलकित गोयल

द्वारा
  1. सी . में लिंक्ड सूची का उपयोग कर प्राथमिकता कतार सी . में लिंक्ड सूची का उपयोग कर प्राथमिकता कतार

    हमें डेटा और प्राथमिकता एक पूर्णांक मान के रूप में दी जाती है और कार्य दी गई प्राथमिकता के अनुसार एक लिंक्ड सूची बनाना और परिणाम प्रदर्शित करना है। Queue एक FIFO डेटा संरचना है जिसमें जो तत्व पहले डाला जाता है वह सबसे पहले निकाला जाता है। प्राथमिकता कतार एक प्रकार की कतार है जिसमें प्राथमिकता के आध

  1. जावास्क्रिप्ट में वैकल्पिक चेनिंग ऑपरेटर। जावास्क्रिप्ट में वैकल्पिक चेनिंग ऑपरेटर।

    वैकल्पिक चेनिंग ऑपरेटर को ES2020 में पेश किया गया है और हमें स्पष्ट रूप से जाँच किए बिना एक नेस्टेड संपत्ति तक पहुँचने की अनुमति देता है कि क्या श्रृंखला में प्रत्येक संदर्भ शून्य या अपरिभाषित है। पहले, हम &&ऑपरेटर का उपयोग यह जांचने के लिए करते थे कि क्या मूल वस्तु शून्य या अपरिभाषित नहीं है, लेकिन

  1. मैं विंडो की चौड़ाई को भरने वाले लाइन-लिपटे टेक्स्ट को बनाने के लिए पायथन में टिंकर का उपयोग कैसे करूं? मैं विंडो की चौड़ाई को भरने वाले लाइन-लिपटे टेक्स्ट को बनाने के लिए पायथन में टिंकर का उपयोग कैसे करूं?

    Tkinter टेक्स्ट फ़ील्ड में डेटा इनपुट करने के लिए टेक्स्ट विजेट प्रदान करता है। यह मल्टीलाइन यूजर इनपुट को स्वीकार कर सकता है। टिंकर में कई अंतर्निहित गुण और विशेषताएं शामिल हैं जिनका उपयोग संदर्भ के रंगरूप को बेहतर बनाने के लिए किया जा सकता है। टेक्स्ट विजेट में लिखे गए टेक्स्ट को रैप प्रॉपर्टी से