क्यों रूबी ऑन रेल्स डिजाइनरों के लिए सबसे अच्छी पहली प्रोग्रामिंग भाषाओं में से एक है। रूबी ऑन रेल्स का परिचय रूबी ऑन रेल्स की मूल बातें

आज मुझे इंटरनेट पर एक कहानी मिली कि कैसे जेम्स फेंड नाम के किसी व्यक्ति ने 12 सप्ताह तक रूबी ऑन रेल्स सीखी। नीचे आप इस कहानी का अपेक्षाकृत सटीक अनुवाद पढ़ सकते हैं, और उम्मीद है कि आप इस अद्भुत ढांचे (और अद्भुत भाषा) का पता लगाने के लिए प्रेरित होंगे।

शुरू करने से पहले, मैं जोश क्रूज़ (http://joshcrews.com) का परिचय देना चाहूंगा और मुझे रूबी ऑन रेल्स सीखना शुरू करने के लिए मनाने के लिए उन्हें धन्यवाद देना चाहता हूं; उनके, उनकी मदद के बिना, और मेरे गुरु बनकर बिताए गए घंटों के बिना, मैं आज यह नहीं लिख रहा होता। धन्यवाद।

23 जनवरी को, मैंने अपना ड्रीम आइडिया, Freelancify.com लॉन्च किया। ठीक 12 सप्ताह पहले, मैं एक तकनीकी उद्यमी था और एक अच्छा एमवीपी (न्यूनतम व्यवहार्य उत्पाद) बनाने के लिए हजारों डॉलर खर्च कर रहा था क्योंकि मेरे पास ज्ञान की कमी थी। इसका एक कारण (मैंने उस समय सोचा था) यह था कि प्रशिक्षण मेरे लिए बहुत कठिन था या इसमें बहुत अधिक समय लगेगा। मैंने सोचा (कई अन्य लोगों की तरह) कि प्रोग्रामर जादुई समस्या-समाधान और गणित कौशल के एक सेट के साथ पैदा होते हैं (और कुछ हैं) जो उन्हें प्रोग्रामिंग जीनियस बनाते हैं। और ठीक 12 सप्ताह पहले मैंने बहुत लंबे समय में लिया गया सबसे अच्छा निर्णय लिया है।. अब मेरा कोई भी विचार एक विचार से अधिक कुछ नहीं रह जायेगा। अब मेरे पास उत्पादन संस्करण लॉन्च करने का अवसर है, मैं केवल होस्टिंग पर पैसा खर्च कर रहा हूं और कुछ प्रयास कर रहा हूं। आज, यह कौशल सेट कैलिफ़ोर्निया गोल्ड रश के दौरान ट्रैक्टरों का एक गुच्छा खींचने के समान है, जबकि बाकी सभी लोग साधारण फावड़े का उपयोग कर रहे थे। मेरा सुझाव है कि हर कोई कोड लिखना सीखे. यहां मैं एक स्पष्टीकरण जोड़ना चाहूंगा: पहले, मैंने पोस्ट को "मैंने 8 सप्ताह में रेल कैसे सीखी" कहा था, हालांकि, सटीक होने के लिए, लॉन्च की तारीख को देखते हुए, यह 12 सप्ताह का हो गया। हालाँकि, 8 सप्ताह के भीतर मुझे लगा कि मैं काफी कुछ जानता हूँ, और अगले चार सप्ताह सीखने के बजाय जो ज्ञान मैंने प्राप्त किया उसे काम में लगाने में अधिक व्यतीत हो गए।

रेल सीखना शुरू करने से पहले मेरे पास क्या कौशल थे?

मैं HTML और CSS का ज्ञान रखने वाला एक वेब डिज़ाइनर था और मुख्य रूप से UI और UX डिज़ाइन पर ध्यान केंद्रित करता था। वास्तविक कोड (एचटीएमएल को छोड़कर) के साथ मैंने जो सबसे कठिन काम किया है, वह वर्डप्रेस को अनुकूलित करने में सक्षम होना है। संक्षेप में, मुझे बिल्कुल पता नहीं था कि एमवीसी ढांचा क्या है या डेटाबेस सामान्य रूप से कैसे काम करते हैं। Freelancify के लिए डिज़ाइन, लेआउट और HTML जून 2011 में दो सप्ताह में मेरे द्वारा बनाया गया था।

मैंने अध्ययन करने का निर्णय क्यों लिया?

जून 2011 में वापस जाएं, जब लेआउट तैयार था, मैंने एक कोडर की खोज शुरू की जो लेआउट को कार्यात्मक बना सके। लेआउट लगभग तैयार था: मेरे पास टेक्स्ट फ़ील्ड, ड्रॉप-डाउन मेनू, फॉर्म, बटन, जहां आवश्यक हो वहां जाने वाले लिंक इत्यादि थे। मुझे एक डेवलपर मिला, और संक्षेप में कहें तो वह व्यक्ति मुझे पसंद नहीं आया। मुझ पर बहुत सारा कर्ज हो गया था और कोई भी उत्पाद पूरा होने के करीब भी नहीं था। इसलिए मैंने जोश क्रिअस से संपर्क किया (मैं उनसे रूबी ऑन रेल्स मीटअप में मिला था जो उन्होंने नैशविले में आयोजित किया था) और उनसे यह देखने के लिए मिला कि क्या मैं एक डेवलपर के रूप में जो कुछ बचा था उसमें से कुछ बना सकता हूं। दुर्भाग्य से, कोड को ठीक करने और संशोधित करने में एक सक्षम प्रोग्रामर द्वारा इसे स्क्रैच से विकसित करने से कम समय नहीं लगेगा। मैं निराश हो गया, यह महसूस करते हुए कि मैं फिर से विकास पर हजारों डॉलर खर्च नहीं कर सकता। और फिर जोश ने कहा... " आप यह क्यों नहीं सीखते कि रूबी ऑन रेल्स को कैसे संभालना है, यह प्रोजेक्ट एक शानदार तरीका होगा" और तब " मैं आपसे सप्ताह में दो बार भी मिल सकता हूं और आपकी पढ़ाई में मदद कर सकता हूं" मैंने पूरी रात इसके बारे में सोचते हुए बिता दी। मेरे विकल्प थे: एक आरामदायक नौकरी ढूंढें और बिलों का भुगतान करें यारेल्स सीखने के लिए सब कुछ जोखिम में डालें और अंततः इटली द्वारा पेश किए जाने वाले सर्वोत्तम रेमन का लुत्फ़ उठाएँ। मैंने फैसला किया है। मैंने अगली सुबह जोश को फोन किया। मैंने सब कुछ डाल दिया. मैंने शेष बचत से धन आवंटित किया और इसे तीन महीनों में विभाजित किया (अकेले और बिना बच्चों के रहने वाले एक अकेले व्यक्ति के लिए, प्रति माह एक हजार डॉलर पर्याप्त है)। काम पर जाने का समय हो गया है, मैं अब पूर्णकालिक प्रशिक्षु हूं। यह ध्यान में रखते हुए कि Google खोज, स्टैकओवरफ़्लो, IRC #RubyOnRails और रेल्स समुदाय मेरे फंसने पर मेरा समर्थन करेंगे, मुझे यकीन है कि उनमें से बहुत सारे होंगे।

मेरे अगले तीन महीने - मिशन: एक एमवीपी प्राप्त करें, काम करने के लिए पर्याप्त प्राप्त करें, लेकिन एक भयानक पहली छाप छोड़ने के लिए "पर्याप्त रूप से बेकार" न हों।

सप्ताह 1 - 3

यह संभवतः सबसे बड़ा सीखने का दौर था, लेकिन मैंने हार नहीं मानी।

दीवारें उन लोगों के लिए बनाई जाती हैं जो वास्तव में उन्हें छोड़ना नहीं चाहते।

एक पूर्ण नौसिखिया के लिए कार्यशील रेल वातावरण स्थापित करना अविश्वसनीय रूप से कष्टप्रद हो सकता है। युक्ति #1: एक मैक प्राप्त करें। युक्ति #2: होमब्रू, आरवीएम, गिट और हेरोकू का उपयोग करें (वास्तव में आरंभ करने के लिए आपको बस इतना ही चाहिए)। मैंने इंस्टॉल करने में कुछ दिन बिताए, फिर सब कुछ अनइंस्टॉल किया और दोबारा इंस्टॉल किया। बस इसे कुछ बार दोहराएं और आपको इसका उपयोग करने की आदत हो जाएगी। कमांड लाइनटर्मिनल (कंसोल) और समझें कि चीज़ें इस तरह से क्यों काम करती हैं। फिर, पहली चीज़ जो मैंने शुरू की वह थी ट्राइरूबी, रेल्स फॉर जॉम्बीज़, और माइकल हार्टले की रेल्स ट्यूटोरियल। सामग्री को 120% समझने के बारे में चिंता न करें, यह तब तक नहीं होगा जब तक आप वास्तव में अध्ययन शुरू नहीं करेंगे। मैंने रेल्स ट्यूटोरियल पूरा किया और लगभग एक सप्ताह में यह ट्विटर जैसा ऐप बनाया, बिना यह समझे कि मैंने क्या किया है। बाद में, जैसे-जैसे मैं आगे बढ़ा, मुझे एहसास होने लगा कि सब कुछ समझ में आने लगा है।

सप्ताह 3 - 6

रेल्स ट्यूटोरियल का उपयोग करके बनाए गए ट्विटर ऐप से मुझे कुछ आत्मविश्वास मिला। प्रबंधन ने मुझे डेवलपर नहीं बनाया, लेकिन अब मुझे पता है सामान्य कदमएप्लिकेशन बनाने में, एप्लिकेशन बनाने से लेकर उसे हेरोकू पर इंस्टॉल करने तक। बीच में जो कुछ हुआ वह धुंधला रह गया. मैं वास्तव में अब पढ़ाई कैसे शुरू कर सकता हूँ? एक वास्तविक प्रोजेक्ट पर काम करना मेरे लिए बहुत मायने रखता है. जोश और मैंने फैसला किया कि मुझे स्वतंत्र रूप से फ्रीलांसिफाइ पर काम करना चाहिए और देखना चाहिए कि मैं क्या कर सकता हूं। पहला काम जो मैंने किया वह था कि सभी HTML को फ्रेमवर्क से हटा दिया और इसे दृश्यों और आंशिक फ़ाइलों में व्यवस्थित किया। मैंने उपयोगकर्ताओं और परियोजनाओं के लिए मचान टेम्पलेट प्लेटफ़ॉर्म बनाए हैं। फिर मैंने अपना पहला असली रत्न, डेविस, सीखना शुरू किया। फिर, संबंध बनाने की क्षमता, उदाहरण के लिए, प्रत्येक उपयोगकर्ता के पास एक पोर्टफोलियो होगा। लेकिन उपयोगकर्ताओं के पास कई पोर्टफोलियो हो सकते हैं, जबकि प्रत्येक पोर्टफोलियो केवल एक उपयोगकर्ता का हो सकता है। एक बार जब आप समझ जाते हैं कि मॉडलों के बीच संबंध कैसे काम करते हैं और उन चीज़ों को कैसे कॉल/प्रदर्शित किया जाता है जो किसी और चीज़ से संबंधित हैं, तो जीवन बहुत आसान हो जाएगा। यदि आप किसी हिस्से पर अटक जाते हैं और हिल नहीं सकते हैं, तो उसे छोड़ दें, संभावना है कि जब आप कोई अन्य सुविधा विकसित कर रहे हों, तो आप यह भी समझ लेंगे कि जो छूट गया उसे कैसे लागू किया जाए।

सप्ताह 6-9

कदम दर कदम, मैंने सीखना जारी रखा, नकल करना और दोहराना। मैं कुछ चीजें काम में लगाऊंगा, और फिर - बेम - और मैं एक दीवार से टकरा जाऊंगा और मुझे बिल्कुल पता नहीं होगा कि आगे क्या करना है। चाहे स्टैकओवरफ़्लो पर जा रहा हो, आईआरसी चैट #RubyOnRails, RailsCasts, या जोश को खींच रहा हो, मुझे अंततः पता चल गया कि कैसे आगे बढ़ना है। एक ही चीज़ को बार-बार करें और आप बहुत जल्दी इसमें महारत हासिल कर लेंगे। स्टैकओवरफ़्लो पर किसी के उत्तर का परीक्षण करने में कष्टप्रद घंटे बिताना केवल यह महसूस करना कि यह काम नहीं करता है वास्तव में उपयोगी है। आप समझ गए कि क्या नहीं करना है. और जब आपको उत्तर मिल जाएगा तो आप समझने लगेंगे क्योंबाद वाला काम नहीं किया. यही वह समय था जब मुझे एहसास होना शुरू हुआ कि चीजों की तस्वीर कितनी बड़ी थी और वास्तव में समझ में आया क्योंहर चीज़ बिल्कुल वैसे ही काम करती है जैसे वह काम करती है। मुझे एक बेवकूफ की तरह महसूस हुआ और मैं वापस गया और पहले लिखे गए कोड को और अधिक कुशल बनाने के लिए उसे दोबारा तैयार किया। और एक समय मैं ऐसी स्थिति में पहुंच गया जहां सब कुछ ठीक होने लगा।

सप्ताह 9 - 12

मैं फ्रीलांसिफाई को लॉन्च चरण तक ले जाने के लिए अविश्वसनीय ऊर्जा मोड में था। इस स्तर पर मुझे ऐसा महसूस हुआ मानो मैं उड़ रहा हूं, कार्यों को क्रियान्वित कर रहा हूं। पिछला सप्ताह विभिन्न बगों और भूलों को दूर करने में व्यतीत हुआ। इस सोमवार मैंने साइट लॉन्च की। लेकिन मैं अभी भी अपनी पढ़ाई पूरी करने से बहुत दूर हूं... बस इतना ही। मैंने (पोस्ट की संक्षिप्तता के नाम पर) छोटे विवरण और तकनीकी बिंदु छोड़ दिए हैं। हालाँकि, बेझिझक टिप्पणियों में प्रश्न पूछें, मैं निश्चित रूप से उत्तर देने का प्रयास करूँगा। जेम्स फ़ेंड.

पी.एस. - हालाँकि एक गुरु से मिलने से मुझे बहुत मदद मिली, लेकिन आप निश्चित रूप से उसके बिना भी रेल सीख सकते हैं। या अपने लिए ऐसे व्यक्ति को खोजने का प्रयास करें, कई रेल डेवलपर्स समुदाय में योगदान करना पसंद करते हैं। स्थानीय सम्मेलनों और बैठकों की तलाश करें।

यह प्रविष्टि पहले से ही दो साल से अधिक पुरानी है (27 जनवरी 2012 को प्रकाशित), लेकिन, फिर भी, इसने अपनी प्रासंगिकता नहीं खोई है। इस दौरान, जेम्स फेंड फ्रीलांसिफ़ाई को बेचने और एक नए स्टार्टअप में निवेश करने में कामयाब रहे, उन्होंने 27 फरवरी, 2013 को इस बारे में एक नोट छोड़ा। मेरा मानना ​​​​है कि यह लेख एक उत्कृष्ट उदाहरण है कि कोई व्यक्ति अपने लक्ष्य को कैसे प्राप्त कर सकता है। आपको बस शुरुआत करनी है. :)

यह मार्गदर्शिका रूबी ऑन रेल्स को स्थापित करने और चलाने के बारे में बताती है।

इसे पढ़ने के बाद आप सीखेंगे:

  • रेल्स कैसे स्थापित करें, एक नया रेल एप्लिकेशन कैसे बनाएं और अपने एप्लिकेशन को डेटाबेस में कैसे संलग्न करें।
  • रेल एप्लिकेशन की सामान्य संरचना।
  • एमवीसी (मॉडल, व्यू कंट्रोलर) और रेस्टफुल आधारित डिजाइन के बुनियादी सिद्धांत।
  • रेल एप्लिकेशन के लिए प्रारंभिक कोड जल्दी से कैसे उत्पन्न करें।

इस मैनुअल में धारणाएँ

यह ट्यूटोरियल उन शुरुआती लोगों के लिए है जो बिल्कुल नए सिरे से रेल एप्लिकेशन शुरू करना चाहते हैं। इसका मतलब यह नहीं है कि आपने पहले रेल के साथ काम किया है।

रेल्स रूबी प्रोग्रामिंग भाषा में लिखा गया एक वेब डेवलपमेंट फ्रेमवर्क है। यदि आपके पास रूबी के साथ अनुभव नहीं है, तो आपको सीधे रेल सीखने में कठिनाई हो सकती है। उदाहरण के लिए, रूबी सीखने के लिए समर्पित कई अच्छे अंग्रेजी-भाषा संसाधन हैं:

कृपया ध्यान दें कि कुछ संसाधन, हालांकि अभी भी अच्छे हैं, अभी भी रूबी के पुराने संस्करणों जैसे कि 1.6 और विशेष रूप से 1.8 को कवर करते हैं, और कुछ सिंटैक्स को शामिल नहीं करते हैं जो आप रोजमर्रा के रेल विकास में देखेंगे।

रेल क्या है?

रेल्स रूबी प्रोग्रामिंग भाषा में लिखा गया एक वेब डेवलपमेंट फ्रेमवर्क है। इसे प्रत्येक डेवलपर को एक नया प्रोजेक्ट बनाने के लिए क्या चाहिए, इसके बारे में कई धारणाएँ बनाकर प्रोग्रामिंग वेब अनुप्रयोगों को आसान बनाने के लिए डिज़ाइन किया गया है। यह आपको अन्य भाषाओं और फ्रेमवर्क की तुलना में प्रोग्रामिंग के दौरान कम कोड लिखने की अनुमति देता है। व्यावसायिक रेल डेवलपर्स यह भी ध्यान देते हैं कि यह वेब एप्लिकेशन विकसित करना अधिक मजेदार बनाता है =)

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

रेल दर्शन में दो महत्वपूर्ण मार्गदर्शक सिद्धांत शामिल हैं:

  • अपने आप को न दोहराएँ: DRY एक सॉफ्टवेयर विकास सिद्धांत है जो बताता है कि "सूचना के प्रत्येक टुकड़े का सिस्टम में एक एकल, गैर-अनावश्यक, आधिकारिक प्रतिनिधित्व होना चाहिए।" एक ही जानकारी को बार-बार न लिखें, कोड को बनाए रखना आसान होगा और अधिक विस्तार योग्य और कम गड़बड़ी वाला होगा।
  • कॉन्फिगरेशन पर सम्मलेन:रेल्स पर राय है सर्वोत्तम तरीकेएक वेब एप्लिकेशन में बहुत सी चीजें करें, और इन सम्मेलनों को डिफ़ॉल्ट रूप से सेट करें, न कि आपको कई कॉन्फ़िगरेशन फ़ाइलों के साथ छेड़छाड़ करने के लिए मजबूर करें।

एक नई रेल परियोजना बनाना

इस गाइड का उपयोग करने का सबसे अच्छा तरीका इसे चरण दर चरण पढ़ना है। उदाहरण एप्लिकेशन को चलाने के लिए सभी चरण आवश्यक हैं, और किसी अतिरिक्त कोड या चरण की आवश्यकता नहीं है।

इस ट्यूटोरियल का अनुसरण करके, आप ब्लॉग नामक एक रेल प्रोजेक्ट बनाएंगे, जो एक बहुत ही सरल वेब ब्लॉग है। इससे पहले कि हम कोई एप्लिकेशन बनाना शुरू करें, हमें यह सुनिश्चित करना होगा कि रेल्स स्वयं स्थापित है।

निम्नलिखित उदाहरण UNIX-जैसी टर्मिनल इनपुट लाइन को इंगित करने के लिए $ का उपयोग करते हैं ऑपरेटिंग सिस्टमआह, हालाँकि इसे अलग तरीके से कॉन्फ़िगर किया जा सकता है। यदि आप विंडोज़ का उपयोग कर रहे हैं, तो लाइन कुछ इस तरह दिखाई देगी c:\source_code>

3.1. रेल स्थापित करना

रेल स्थापित करने से पहले, आपको यह सुनिश्चित करना होगा कि आपके सिस्टम पर आवश्यक पूर्व-निर्भरताएँ स्थापित हैं। इनमें रूबी और SQLite3 शामिल हैं।

कमांड लाइन एप्लिकेशन खोलें. MacOS पर, टर्मिनल.ऐप खोलें, विंडोज़ पर, स्टार्ट मेनू से "रन" चुनें और "cmd.exe" लिखें। डॉलर चिह्न $ से शुरू होने वाले किसी भी आदेश को कमांड लाइन पर चलाया जाना चाहिए। सुनिश्चित करें कि आपके पास रूबी का वर्तमान संस्करण स्थापित है:

$ रूबी -v रूबी 2.5.0

रेल्स को स्थापित करने के लिए रूबी संस्करण 2.5.0 या बाद के संस्करण की आवश्यकता होती है। यदि संस्करण संख्या इससे कम है, तो आपको रूबी की एक नई प्रति स्थापित करने की आवश्यकता होगी।

किसी सिस्टम पर रूबी और रूबी ऑन रेल्स को शीघ्रता से स्थापित करने के लिए, विंडोज़ उपयोगकर्ता रेल्स इंस्टालर का उपयोग कर सकते हैं। अधिकांश ऑपरेटिंग सिस्टम के लिए अतिरिक्त इंस्टॉलेशन विधियाँ Ruby-lang.org पर देखी जा सकती हैं।

यदि आप विंडोज़ पर काम कर रहे हैं, तो आपको रूबी इंस्टालर डेवलपमेंट किट इंस्टॉल करना होगा।

आपको SQLite3 डेटाबेस इंस्टॉलेशन की भी आवश्यकता होगी।

कई लोकप्रिय UNIX-जैसे OSes SQLite3 के उचित संस्करण के साथ आते हैं। विंडोज़ पर, यदि आपने रेल इंस्टालर का उपयोग करके रेल स्थापित किया है, तो आपके पास पहले से ही SQLite स्थापित है। अन्य उपयोगकर्ता इंस्टॉलेशन निर्देशों के लिए SQLite3 वेबसाइट का संदर्भ ले सकते हैं। जाँचें कि यह सही ढंग से स्थापित है और आपके PATH में समाहित है:

$sqlite3--संस्करण

प्रोग्राम को अपना संस्करण रिपोर्ट करना होगा.

रेल्स स्थापित करने के लिए, रूबीजेम्स द्वारा प्रदान किए गए जेम इंस्टॉल कमांड का उपयोग करें:

$ रत्न रेल स्थापित करें

यह जाँचने के लिए कि सब कुछ सही ढंग से स्थापित है, आपको निम्नलिखित कार्य करने होंगे:

$रेल--संस्करण

यदि यह "रेल 6.0.0" जैसा कुछ कहता है, तो आप जारी रख सकते हैं।

3.2. एक ब्लॉग एप्लीकेशन बनाना

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

इस जनरेटर का उपयोग करने के लिए, एक टर्मिनल खोलें, उस फ़ोल्डर पर जाएं जहां आपको फ़ाइलें बनाने और लिखने की अनुमति है:

$रेल नया ब्लॉग

यह ब्लॉग निर्देशिका में ब्लॉग नामक एक रेल एप्लिकेशन बनाएगा और उन रत्नों को स्थापित करेगा जिनकी निर्भरता बंडल इंस्टॉल का उपयोग करते समय जेमफाइल में उल्लिखित है।

पर विंडोज़ का उपयोग करनालिनक्स के लिए सबसिस्टम, संदेशों पर कुछ प्रतिबंध हैं फाइल सिस्टम, यह दर्शाता है कि स्प्रिंग और लिसन रत्नों को अक्षम किया जाना चाहिए, जो रेल्स न्यू ब्लॉग --स्किप-स्प्रिंग --स्किप-लिसन चलाकर किया जा सकता है।

आप सभी संभावित कमांड लाइन विकल्प देख सकते हैं जिन्हें रेल्स एप्लिकेशन बिल्डर रेल्स न्यू -एच चलाकर स्वीकार करता है।

एक बार जब आप ब्लॉग एप्लिकेशन बना लें, तो उसके फ़ोल्डर पर जाएँ:

ब्लॉग निर्देशिका में कई स्वचालित रूप से जेनरेट की गई फ़ाइलें और फ़ोल्डर्स होते हैं जो रेल एप्लिकेशन की संरचना को परिभाषित करते हैं। इस ट्यूटोरियल में अधिकांश काम ऐप फ़ोल्डर में होगा, लेकिन अभी आइए प्रत्येक फ़ोल्डर के फ़ंक्शंस पर नज़र डालें जो रेल डिफ़ॉल्ट रूप से एक नए एप्लिकेशन में बनाता है:

फ़ाइल फ़ोल्डर उद्देश्य
अनुप्रयोग/ इसमें आपके एप्लिकेशन के नियंत्रक, मॉडल, दृश्य, सहायक, मेलर्स, चैनल, कार्य और संपत्तियां शामिल हैं। हम आगे इस फ़ोल्डर को और अधिक विस्तार से देखेंगे।
बिन/ इसमें रेल स्क्रिप्ट शामिल हैं जो आपके एप्लिकेशन को प्रारंभ करती हैं, और निर्देशिका में अन्य स्क्रिप्ट भी हो सकती हैं जिनका उपयोग आप कॉन्फ़िगर करने, अपडेट करने, तैनात करने या चलाने के लिए करते हैं।
config/ रूट कॉन्फ़िगरेशन, आपका एप्लिकेशन डेटाबेस, आदि। इसे रेल अनुप्रयोगों को कॉन्फ़िगर करने में अधिक विस्तार से शामिल किया गया है
config.ru एप्लिकेशन को चलाने के लिए उपयोग किए जाने वाले रैक-आधारित सर्वर के लिए रैक कॉन्फ़िगरेशन। रैक के बारे में अधिक जानकारी के लिए रैक वेबसाइट पर जाएँ।
डीबी/ इसमें आपकी वर्तमान डेटाबेस स्कीमा के साथ-साथ डेटाबेस माइग्रेशन भी शामिल है।
जेमफ़ाइल
जेमफ़ाइल.लॉक
ये फ़ाइलें आपको यह निर्दिष्ट करने की अनुमति देती हैं कि आपके रेल एप्लिकेशन को कौन सी रत्न निर्भरता की आवश्यकता है। इन फ़ाइलों का उपयोग बंडलर जेम द्वारा किया जाता है। बंडलर के बारे में अधिक जानकारी के लिए बंडलर वेबसाइट पर जाएँ।
lib/ आपके एप्लिकेशन के लिए बाहरी मॉड्यूल।
लकड़ी का लट्ठा/ एप्लिकेशन लॉग फ़ाइलें.
package.json यह फ़ाइल आपको यह निर्दिष्ट करने की अनुमति देती है कि आपके रेल एप्लिकेशन के लिए कौन सी एनपीएम निर्भरताएँ आवश्यक हैं। यह फ़ाइल यार्न द्वारा उपयोग की जाती है. यार्न के बारे में अधिक जानकारी के लिए यार्न वेबसाइट पर जाएँ।
जनता/ एकमात्र फ़ोल्डर जो वैसे ही बाहर से पहुंच योग्य है। स्थिर फ़ाइलें और संकलित संपत्तियां शामिल हैं।
रेकफ़ाइल यह फ़ाइल उन कार्यों को ढूंढती और लोड करती है जिन्हें कमांड लाइन पर चलाया जा सकता है। सभी रेल घटकों में एक विशिष्ट कार्य उपलब्ध है। रेकफ़ाइल को बदलने के बजाय, आप एप्लिकेशन की lib/tasks निर्देशिका में फ़ाइलें जोड़कर अपने स्वयं के कार्य जोड़ सकते हैं।
README.md यह आपके एप्लिकेशन के लिए एक परिचयात्मक मार्गदर्शिका है. इसे दूसरों को यह बताने के लिए संपादित किया जाना चाहिए कि आपका एप्लिकेशन क्या करता है, इसे कैसे कॉन्फ़िगर करें, आदि।
भंडारण/ डिस्क सेवा के लिए सक्रिय संग्रहण फ़ाइलें। यह सक्रिय संग्रहण अवलोकन मार्गदर्शिका में शामिल है।
परीक्षा/ यूनिट परीक्षण, फिक्स्चर और अन्य परीक्षण उपकरण। यह परीक्षण रेल अनुप्रयोग मार्गदर्शिका में शामिल है।
टीएमपी/ अस्थायी फ़ाइलें (जैसे कैश और पीआईडी ​​फ़ाइलें)
विक्रेता/ तृतीय पक्ष कोड के लिए स्थान. एक सामान्य रेल एप्लिकेशन में, इसमें बाहरी रत्न शामिल होते हैं।
.gitignore यह फ़ाइल गिट को बताती है कि उसे किन फ़ाइलों (स्पष्ट रूप से या डिज़ाइन द्वारा) को अनदेखा करना चाहिए। फ़ाइलों को अनदेखा करने के बारे में अधिक जानकारी के लिए, GitHub - फ़ाइलों को अनदेखा करना देखें।
.रूबी-संस्करण इस फ़ाइल में रूबी का डिफ़ॉल्ट संस्करण है।

हेलो रेल्स!

सबसे पहले, आइए स्क्रीन पर कुछ टेक्स्ट प्रदर्शित करें। ऐसा करने के लिए, आपको अपने रेल एप्लिकेशन के लिए एक चालू सर्वर की आवश्यकता है।

4.1. वेब सर्वर प्रारंभ करना

वास्तव में, आपके पास पहले से ही एक कार्यात्मक रेल एप्लिकेशन है। सुनिश्चित करने के लिए, आपको अपनी मशीन पर एक वेब सर्वर चलाने की आवश्यकता है। यह ब्लॉग निर्देशिका से निम्नलिखित कमांड चलाकर किया जा सकता है:

यदि आप विंडोज़ का उपयोग कर रहे हैं, तो आपको बिन फ़ोल्डर से स्क्रिप्ट को सीधे रूबी इंटरप्रेटर, यानी रूबी बिन\रेल सर्वर पर पास करना चाहिए।

जावास्क्रिप्ट परिसंपत्तियों को संपीड़ित करने के लिए आपके सिस्टम पर जावास्क्रिप्ट रनटाइम की आवश्यकता होती है, और इसके न होने से परिसंपत्ति संपीड़न के दौरान एक निष्पादन त्रुटि होगी। आमतौर पर, macOS और Windows स्थापित जावास्क्रिप्ट रनटाइम के साथ आते हैं। therubyrhino JRuby उपयोगकर्ताओं के लिए अनुशंसित रनटाइम है और यदि एप्लिकेशन JRuby के अंतर्गत उत्पन्न होता है तो इसे Gemfile में जोड़ा जाता है। आप ExecJS में समर्थित रनटाइम के बारे में सब कुछ जान सकते हैं

यह प्यूमा को लॉन्च करेगा, जो डिफ़ॉल्ट रूप से रेल्स के साथ वितरित एक वेब सर्वर है। एप्लिकेशन को क्रियाशील देखने के लिए, ब्राउज़र विंडो खोलें और http://localhost:3000 पर जाएं। आपको डिफ़ॉल्ट रेल जानकारी पृष्ठ देखना चाहिए:

वेब सर्वर को रोकने के लिए, उस टर्मिनल में Ctrl+C दबाएँ जहाँ वह चल रहा है। यह सत्यापित करने के लिए कि सर्वर बंद कर दिया गया है, आपको कमांड लाइन कर्सर फिर से देखना चाहिए। अधिकांश के लिए UNIX जैसी प्रणालियाँ, macOS सहित, यह डॉलर चिह्न $ होगा। विकास मोड में, रेल्स को आम तौर पर सर्वर को रोकने की आवश्यकता नहीं होती है; आपके द्वारा फ़ाइलों में किए गए सभी परिवर्तन सर्वर द्वारा स्वचालित रूप से उठाए जाते हैं।

वेलकम एबोर्ड पेज एक नए रेल एप्लिकेशन के लिए एक प्रकार का परीक्षण है: यह दर्शाता है कि आपके प्रोग्राम पेज को प्रदर्शित करने के लिए पर्याप्त रूप से सही तरीके से कॉन्फ़िगर किए गए हैं।

4.2. रेल्स को नमस्ते कहो

रेल्स को "हैलो" कहने के लिए, आपको कम से कम कुछ बनाना होगा नियंत्रकऔर देखना(प्रदर्शन)।

नियंत्रक का उद्देश्य एप्लिकेशन के लिए विशिष्ट अनुरोध प्राप्त करना है। मार्गयह तय करता है कि कौन सा नियंत्रक कौन से अनुरोध प्राप्त करेगा। प्रत्येक नियंत्रक के लिए अक्सर एक से अधिक मार्ग होते हैं, और अलग-अलग मार्गों को अलग-अलग तरीके से नियंत्रित किया जा सकता है कार्रवाई. प्रत्येक क्रिया का उद्देश्य दृश्य को प्रदान करने के लिए जानकारी एकत्र करना है।

दृश्य का उद्देश्य इस जानकारी को मानव-पठनीय प्रारूप में प्रदर्शित करना है। ध्यान देने योग्य एक महत्वपूर्ण अंतर यह है कि वह स्थान जहां जानकारी एकत्र की जाती है नियंत्रक, एक दृश्य नहीं. दृश्य को केवल यह जानकारी प्रदर्शित करनी चाहिए. डिफ़ॉल्ट रूप से, व्यू टेम्प्लेट eRuby (एम्बेडेड रूबी) नामक भाषा में लिखे जाते हैं, जिसे उपयोगकर्ता को भेजे जाने से पहले रेल अनुरोध लूप द्वारा परिवर्तित किया जाता है।

एक नया नियंत्रक बनाने के लिए, आपको "नियंत्रक" जनरेटर चलाना होगा और उसे बताना होगा कि आप "अनुक्रमणिका" नामक क्रिया के साथ "वेलकम" नामक नियंत्रक चाहते हैं, जैसे:

$ रेल नियंत्रक स्वागत सूचकांक उत्पन्न करते हैं

रेल कई फ़ाइलें और एक रूट बनाएगी.

ऐप/कंट्रोलर्स/वेलकम_कंट्रोलर.आरबी रूट बनाएं, "वेलकम/इंडेक्स" प्राप्त करें, एरब को इनवोक करें, ऐप/व्यूज/वेलकम बनाएं, ऐप/व्यूज/वेलकम/इंडेक्स.html.erb बनाएं, टेस्ट_यूनिट को इनवोक करें, टेस्ट/कंट्रोलर/वेलकम_कंट्रोलर_टेस्ट.आरबी को इनवोक करें, ऐप बनाएं/ हेल्पर्स/वेलकम_हेल्पर.आरबी टेस्ट_यूनिट को लागू करें संपत्तियों को लागू करें एससीएसएस को लागू करें ऐप/एसेट्स/स्टाइलशीट/वेलकम.एससीएसएस बनाएं

उनमें से सबसे महत्वपूर्ण हैं, निश्चित रूप से, नियंत्रक, जो ऐप/कंट्रोलर्स/वेलकम_कंट्रोलर.आरबी में स्थित है, और दृश्य, ऐप/व्यूज़/वेलकम/इंडेक्स.html.erb में स्थित है।

टेक्स्ट एडिटर में फ़ाइल app/views/welcome/index.html.erb खोलें। फ़ाइल में सभी मौजूदा कोड हटा दें और इसे कोड की निम्नलिखित पंक्ति से बदलें:

यदि आप दोबारा फॉर्म जमा करते हैं, तो आपको निम्न जैसा कुछ दिखाई देगा:

"पहला लेख!", "पाठ"=>"यह मेरा पहला लेख है।") अनुमति: गलत>

अब यह क्रिया प्रपत्र से आए आलेख के पैरामीटर प्रदर्शित करती है। हालाँकि, यह अभी भी बेकार है. हां, आप पैरामीटर देखते हैं, लेकिन वास्तव में आप उनके साथ कुछ नहीं करते हैं।

5.4. एक आलेख मॉडल बनाना

रेल्स में मॉडल एकवचन नाम का उपयोग करते हैं, और डेटाबेस में उनकी संबंधित तालिका बहुवचन नाम का उपयोग करती है। रेल्स एक मॉडल जनरेटर प्रदान करता है जिसका उपयोग अधिकांश रेल डेवलपर्स नए मॉडल बनाने के लिए करते हैं। नया मॉडल बनाने के लिए, इस कमांड को अपने टर्मिनल में चलाएँ:

$ रेल मॉडल आलेख शीर्षक उत्पन्न करते हैं: स्ट्रिंग टेक्स्ट: टेक्स्ट

इस कमांड के साथ हम रेल्स को बताते हैं कि हम विशेषता के साथ एक आर्टिकल मॉडल चाहते हैं शीर्षकस्ट्रिंग प्रकार और विशेषता मूलपाठपाठ्य प्रकार। ये विशेषताएँ स्वचालित रूप से आलेख तालिका में जोड़ दी जाएंगी और आलेख मॉडल से जुड़ी होंगी।

रेल फ़ाइलों की एक शृंखला बनाकर प्रतिक्रिया देगी। अब हम केवल ऐप/मॉडल/आर्टिकल.आरबी और डीबी/माइग्रेट/20140120191729_create_articles.rb में रुचि रखते हैं (आपका नाम थोड़ा अलग हो सकता है)। उत्तरार्द्ध डेटाबेस संरचना बनाने के लिए जिम्मेदार है, इसलिए हम इसे आगे देखेंगे।

सक्रिय रिकॉर्ड स्वचालित रूप से कॉलम नामों को मॉडल विशेषताओं के साथ जोड़ने के लिए पर्याप्त स्मार्ट है, जिसका अर्थ है कि रेल मॉडल के अंदर विशेषताओं को घोषित करने की कोई आवश्यकता नहीं है, सक्रिय रिकॉर्ड इसे स्वचालित रूप से करेगा।

5.5. माइग्रेशन प्रारंभ करना

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

यदि आप फ़ाइल db/migrate/YYYYMMDDHHMMSS_create_articles.rb में देखते हैं (याद रखें, आपकी फ़ाइल का नाम थोड़ा अलग है), तो आपको वहां यह मिलेगा:

क्लास क्रिएटआर्टिकल्स< ActiveRecord::Migration def change create_table:articles do |t| t.string:title t.text:text t.timestamps end end end

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

अब हमें माइग्रेशन शुरू करने के लिए रेल कमांड का उपयोग करने की आवश्यकता है:

$ रेल डीबी:माइग्रेट करें

रेल इस माइग्रेशन कमांड को चलाएगी और रिपोर्ट करेगी कि उसने आलेख तालिका बना ली है।

आलेख बनाएँ: माइग्रेट करना ============================================== === -- create_table(:articles) -> 0.0019 == CreateArticles: माइग्रेट (0.0020s) =========================== ==============

चूँकि आप डिफ़ॉल्ट रूप से विकास परिवेश में चल रहे हैं, यह आदेश आपके config/database.yml फ़ाइल के विकास अनुभाग में परिभाषित डेटाबेस पर लागू किया जाएगा। यदि आप उत्पादन जैसे किसी अन्य वातावरण में माइग्रेशन करना चाहते हैं, तो आपको कमांड को कॉल करते समय इसे स्पष्ट रूप से पास करना होगा: रेल डीबी: माइग्रेट RAILS_ENV = उत्पादन।

5.6. नियंत्रक में डेटा सहेजा जा रहा है

आर्टिकल्सकंट्रोलर पर वापस, हमें डेटाबेस में डेटा को सहेजने के लिए नए आर्टिकल मॉडल का उपयोग करने के लिए क्रिएट एक्शन को बदलने की आवश्यकता है। ऐप/कंट्रोलर्स/आर्टिकल्स_कंट्रोलर.आरबी खोलें और क्रिएट एक्शन को इस तरह बदलें:

डिफ़ क्रिएट @आर्टिकल = आर्टिकल.न्यू(पैराम्स[:आर्टिकल]) @आर्टिकल.सेव रीडायरेक्ट_टू @आर्टिकल एंड

यहाँ क्या होता है: प्रत्येक रेल मॉडल को उपयुक्त विशेषताओं के साथ आरंभ किया जा सकता है, जो स्वचालित रूप से संबंधित डेटाबेस कॉलम से जुड़ा होगा। पहली पंक्ति में हम बस यही करते हैं (याद रखें कि पैरामीटर्स[:आर्टिकल] में वे विशेषताएँ शामिल हैं जिनमें हम रुचि रखते हैं)। @article.save तब मॉडल को डेटाबेस में सहेजने के लिए ज़िम्मेदार है। अंत में, हम उपयोगकर्ता को शो एक्शन पर रीडायरेक्ट करते हैं, जिसे हम बाद में परिभाषित करेंगे।

आप सोच रहे होंगे कि आर्टिकल.न्यू में ए को बड़े अक्षरों में क्यों लिखा गया है जबकि इस गाइड के अन्य सभी आलेख लिंक बड़े अक्षरों में हैं। इस संदर्भ में, हम आर्टिकल नामक एक वर्ग का उल्लेख कर रहे हैं, जिसे ऐप/मॉडल/आर्टिकल.आरबी में परिभाषित किया गया है। रूबी में कक्षा के नाम बड़े अक्षर से शुरू होने चाहिए।

अब चूँकि मान्यताएँ उपलब्ध हैं, किसी अमान्य लेख पर @article.save को कॉल करने पर false वापस आ जाएगा। यदि आप ऐप/कंट्रोलर्स/आर्टिकल्स_कंट्रोलर.आरबी को दोबारा खोलते हैं, तो आप देखेंगे कि हम क्रिएट एक्शन में @article.save कॉल के परिणाम की जांच नहीं कर रहे हैं। यदि इस स्थिति में @article.save विफल हो जाता है, तो हमें उपयोगकर्ता को फ़ॉर्म फिर से दिखाना होगा। ऐसा करने के लिए, नए को बदलें और इनके साथ ऐप/कंट्रोलर्स/आर्टिकल्स_कंट्रोलर.आरबी में क्रियाएं बनाएं:

नया परिभाषित करें @लेख = अनुच्छेद.नया अंत बनाएं @लेख = अनुच्छेद.नया(आर्टिकल_पैराम्स) यदि @article.save रीडायरेक्ट_तो @आर्टिकल अन्यथा "नया" एंड एंड प्राइवेट डीईएफ़ आर्टिकल_पैराम्स पैराम्स.require(:article).permit(:title) रेंडर करें , :पाठ) समाप्त

नई कार्रवाई अब @article नामक एक नया इंस्टेंस वैरिएबल बनाती है, और आप कुछ पैराग्राफ में देखेंगे कि क्यों।

ध्यान दें कि क्रिएट एक्शन में हमने रीडायरेक्ट_टू के बजाय रेंडर का उपयोग किया था, जब सेव गलत रिटर्न देता है। रेंडर विधि का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि रेंडर होने पर @article ऑब्जेक्ट को नए टेम्पलेट में वापस भेज दिया जाता है। यह रेंडरिंग फॉर्म सबमिशन के समान अनुरोध के भीतर किया जाता है, जबकि रीडायरेक्ट_टू ब्राउज़र को एक अलग अनुरोध करने के लिए कहता है।

5.11. आलेख अद्यतन

हमने सीआरयूडी के "सीआर" भाग का विस्तार किया है। आइए अब लेखों को अद्यतन करते हुए "यू" भाग पर ध्यान केंद्रित करें।

पहला कदम आर्टिकल्सकंट्रोलर में एक संपादन कार्रवाई जोड़ना है, आम तौर पर नए और क्रिएट क्रियाओं के बीच, जैसा कि दिखाया गया है।

नए को परिभाषित करें @लेख = अनुच्छेद.नया अंत को संपादित करें @लेख = अनुच्छेद.खोजें(पैराम्स[:id]) को समाप्त करें @आर्टिकल को बनाएं = अनुच्छेद.नए(आर्टिकल_पैराम्स) यदि @article.save रीडायरेक्ट_तो @आर्टिकल अन्यथा "नया" अंत प्रस्तुत करें अंत

दृश्य में वैसा ही फ़ॉर्म होगा जिसका उपयोग हमने नए लेख बनाते समय किया था। App/views/articles/edit.html.erb नामक एक फ़ाइल बनाएं और उसमें निम्नलिखित जोड़ें:

लेख का संपादन

<%= form_with(model: @article, local: true) do |form| %> <% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>

    <% @article.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

<%= form.label:title %>
<%= form.text_field:title %>

<%= form.label:text %>
<%= form.text_area:text %>

<%= form.submit %>

<% end %> <%= link_to "Back", articles_path %>

अभी हम फ़ॉर्म को एक अद्यतन कार्रवाई की ओर इंगित कर रहे हैं, जिसे अभी तक परिभाषित नहीं किया गया है, लेकिन हम जल्द ही ऐसा करेंगे।

आलेख ऑब्जेक्ट को form_with विधि में पास करने से संपादित आलेख प्रपत्र सबमिट करने के लिए URL स्वचालित रूप से सेट हो जाएगा। यह विकल्प रेल्स को बताता है कि हम चाहते हैं कि यह फॉर्म PATCH का उपयोग करके सबमिट किया जाए, एक HTTP विधि जिसके लिए उपयोग किए जाने की उम्मीद है अपडेट REST प्रोटोकॉल के अनुसार संसाधन।

फिर आपको ऐप/कंट्रोलर्स/आर्टिकल्स_कंट्रोलर.आरबी में एक अपडेट एक्शन बनाना होगा। इसे निर्माण क्रिया और निजी विधि के बीच जोड़ें:

डिफ़ बनाएं @article = आर्टिकल.नया(article_params) यदि @article.save रीडायरेक्ट_to @article अन्यथा रेंडर "नया" एंड एंड डीफ़ अपडेट @article = आर्टिकल.find(params[:id]) यदि @article.update(article_params) रीडायरेक्ट_to @आर्टिकल अन्य प्रस्तुत करें "संपादित करें" एंड एंड प्राइवेट डीईएफ़ आर्टिकल_पैराम्स पैराम्स.रेक्वायर(:आर्टिकल).परमिट(:टाइटल, :टेक्स्ट) एंड

नई विधि, अद्यतन, का उपयोग तब किया जाता है जब आप पहले से मौजूद किसी रिकॉर्ड को अद्यतन करना चाहते हैं, और यह एक हैश लेता है जिसमें वे विशेषताएँ होती हैं जिन्हें आप अद्यतन करना चाहते हैं। पहले की तरह, यदि लेख को अपडेट करने में कोई त्रुटि होती है, तो हम उपयोगकर्ता को फॉर्म दोबारा दिखाना चाहते हैं।

हमने उस आर्टिकल_पैरम्स विधि का पुन: उपयोग किया जिसे हमने क्रिएट एक्शन के लिए पहले परिभाषित किया था।

अद्यतन करने के लिए सभी विशेषताओं को पारित करना आवश्यक नहीं है। उदाहरण के लिए, यदि @article.update(title: "A new title") को कॉल किया गया था, तो रेल्स केवल शीर्षक विशेषता को अपडेट करेगा, अन्य सभी विशेषताओं को अछूता छोड़ देगा।

<% @articles.each do |article| %> <% end %>
शीर्षक मूलपाठ
<%= article.title %> <%= article.text %> <%= link_to "Show", article_path(article) %> <%= link_to "Edit", edit_article_path(article) %>

और हम टेम्पलेट में app/views/articles/show.html.erb भी जोड़ेंगे ताकि लेख पृष्ठ पर "संपादित करें" लिंक भी हो। टेम्पलेट के अंत में निम्नलिखित जोड़ें:

... <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

और हमारा एप्लिकेशन अब इस तरह दिखता है:

5.12. दृश्यों में दोहराव को साफ़ करने के लिए आंशिक का उपयोग करना

हमारा संपादन पृष्ठ नए पृष्ठ के समान ही है, वास्तव में वे प्रपत्र प्रदर्शित करने के लिए समान कोड का उपयोग करते हैं। आइए आंशिक दृश्य का उपयोग करके इस दोहराव को हटा दें। परंपरा के अनुसार, आंशिक फ़ाइलें अंडरस्कोर से शुरू होती हैं।

निम्नलिखित सामग्री के साथ एक नई फ़ाइल app/views/articles/_form.html.erb बनाएं:

<%= form_with model: @article, local: true do |form| %> <% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>इस लेख को सहेजे जाने से प्रतिबंधित किया गया:

    <% @article.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

<%= form.label:title %>
<%= form.text_field:title %>

<%= form.label:text %>
<%= form.text_area:text %>

<%= form.submit %>

<% end %>

आइए अब इस नए आंशिक को पूरी तरह से दोबारा लिखकर उपयोग करने के लिए ऐप/व्यू/आर्टिकल्स/न्यू.html.erb व्यू को अपडेट करें:

नया लेख

<%= render "form" %> <%= link_to "Back", articles_path %>

और व्यू ऐप/व्यू/आर्टिकल्स/एडिट.html.erb के लिए भी यही बात है:

लेख संपादित करें

<%= render "form" %> <%= link_to "Back", articles_path %>

5.13. लेख हटाना

अब हम डेटाबेस से हटाकर सीआरयूडी के भाग "डी" को कवर करने के लिए तैयार हैं। REST कन्वेंशन के बाद, रेल रूट आउटपुट में लेखों को हटाने का मार्ग इस प्रकार है:

/articles/:id(.:format) लेखों को हटाएं#नष्ट करें

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

इस बिल्ली को देखो!

हम संसाधनों को नष्ट करने के लिए डिलीट विधि का उपयोग करते हैं, और यह मार्ग ऐप/कंट्रोलर्स/आर्टिकल्स_कंट्रोलर.आरबी में नष्ट कार्रवाई से जुड़ा है, जो अभी तक मौजूद नहीं है। नष्ट करने की विधि आम तौर पर नियंत्रक में अंतिम CRUD क्रिया होती है, और अन्य सार्वजनिक CRUD क्रियाओं की तरह, इसे किसी भी निजी या संरक्षित विधियों से पहले रखा जाना चाहिए। आइए इसे जोड़ें:

डिस्ट्रॉय @आर्टिकल = आर्टिकल.फाइंड(पैराम्स[:आईडी]) @आर्टिकल.डिस्ट्रॉय रीडायरेक्ट_टू आर्टिकल्स_पाथ एंड

ऐप/कंट्रोलर्स/आर्टिकल्स_कंट्रोलर.आरबी फ़ाइल में संपूर्ण आर्टिकल्सकंट्रोलर अब इस तरह दिखना चाहिए:

क्लास आर्टिकल्सकंट्रोलर< ApplicationController def index @articles = Article.all end def show @article = Article.find(params[:id]) end def new @article = Article.new end def edit @article = Article.find(params[:id]) end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end def update @article = Article.find(params[:id]) if @article.update(article_params) redirect_to @article else render "edit" end end def destroy @article = Article.find(params[:id]) @article.destroy redirect_to articles_path end private def article_params params.require(:article).permit(:title, :text) end end

जब आप सक्रिय रिकॉर्ड ऑब्जेक्ट को डेटाबेस से हटाना चाहते हैं तो आप नष्ट को कॉल कर सकते हैं। ध्यान दें कि हमें इस क्रिया के लिए कोई दृश्य जोड़ने की आवश्यकता नहीं है क्योंकि हम अनुक्रमणिका क्रिया पर पुनर्निर्देशित कर रहे हैं।

लेख सूचीबद्ध करना

<%= link_to "New article", new_article_path %> <% @articles.each do |article| %> <% end %>
शीर्षक मूलपाठ
<%= article.title %> <%= article.text %> <%= link_to "Show", article_path(article) %> <%= link_to "Edit", edit_article_path(article) %> <%= link_to "Destroy", article_path(article), method: :delete, data: { confirm: "Are you sure?" } %>

यहां हम link_to का अलग तरीके से उपयोग करते हैं। हम नामित मार्ग को दूसरे तर्क के रूप में और विकल्पों को दूसरे तर्क के रूप में पास करते हैं। विधि: :डिलीट और डेटा: (पुष्टि करें: "क्या आप निश्चित हैं?") विकल्प HTML5 विशेषताओं के रूप में उपयोग किए जाते हैं, इसलिए जब एक लिंक पर क्लिक किया जाता है, तो रेल पहले उपयोगकर्ता को एक पुष्टिकरण संवाद दिखाएगा और फिर डिलीट विधि का उपयोग करके लिंक भेजेगा . यह रेल-यूजेएस जावास्क्रिप्ट फ़ाइल का उपयोग करके किया जाता है, जो एप्लिकेशन उत्पन्न होने पर स्वचालित रूप से एप्लिकेशन लेआउट (ऐप/व्यू/लेआउट/एप्लिकेशन.html.erb) में शामिल हो जाता है। इस फ़ाइल के बिना, पुष्टिकरण संवाद नहीं दिखाया जाएगा.

बधाई हो, अब आप लेख बना सकते हैं, सभी और व्यक्तिगत रूप से देख सकते हैं, अद्यतन कर सकते हैं और नष्ट कर सकते हैं।

दूसरा मॉडल जोड़ा जा रहा है

एप्लिकेशन में दूसरा मॉडल जोड़ने का समय आ गया है। दूसरा मॉडल लेखों पर टिप्पणियों को संसाधित करेगा।

6.1. मॉडल तैयार करना

हम उसी जनरेटर का उपयोग करने का इरादा रखते हैं जिसका उपयोग हमने पहले आर्टिकल मॉडल बनाते समय किया था। इस बार हम एक टिप्पणी मॉडल बनाएंगे जिसमें लेख का लिंक होगा। टर्मिनल में निम्नलिखित कमांड चलाएँ:

$ रेल मॉडल टिप्पणी टिप्पणीकर्ता उत्पन्न करते हैं: स्ट्रिंग बॉडी: पाठ लेख: संदर्भ

यह कमांड चार फ़ाइलें उत्पन्न करता है:

सबसे पहले आइए app/models/comment.rb पर एक नज़र डालें:

कक्षा टिप्पणी< ApplicationRecord belongs_to:article end

यह उस आर्टिकल मॉडल के समान है जिसे हमने पहले देखा था। अंतर संबंधित_टू:आर्टिकल लाइन में है, जो सेट होता है कनेक्शनसक्रिय रिकॉर्ड. आप गाइड के अगले भाग में कनेक्शन के बारे में जानेंगे।

बैश कमांड में प्रयुक्त कीवर्ड (:references) मॉडल के लिए एक विशेष डेटा प्रकार है। उसने बनाया नया कॉलमआपके डेटाबेस में प्रस्तुत मॉडल के नाम के साथ एक संलग्न _id जिसमें संख्यात्मक मान हो सकते हैं। बेहतर ढंग से समझने के लिए, माइग्रेशन करने के बाद db/schema.rb फ़ाइल का विश्लेषण करें।

मॉडल के अलावा, रेल्स ने संबंधित डेटाबेस तालिका बनाने के लिए एक माइग्रेशन भी किया:

क्लास क्रिएटटिप्पणियाँ< ActiveRecord::Migration def change create_table:comments do |t| t.string:commenter t.text:body t.references:article, null: false, foreign_key: true t.timestamps end end end

T.references लाइन artical_id नामक एक संख्यात्मक कॉलम, उस पर एक सूचकांक और आलेख तालिका के id कॉलम की ओर इशारा करने वाली एक विदेशी कुंजी बाधा बनाती है। अगला, हम माइग्रेशन शुरू करते हैं:

$ रेल डीबी:माइग्रेट करें

रेल केवल उन माइग्रेशन को चलाने के लिए पर्याप्त स्मार्ट है जो पहले से ही वर्तमान डेटाबेस पर नहीं चलाए गए हैं, हमारे मामले में आप देखेंगे:

टिप्पणियाँ बनाएँ: माइग्रेट करना ============================================= == -- create_table(:comments) -> 0.0115s == CreateComments: माइग्रेट (0.0119s) ============================= ============

6.2. कनेक्टिंग मॉडल

सक्रिय रिकॉर्ड संबंध आपको दो मॉडलों के बीच संबंधों को आसानी से घोषित करने की अनुमति देते हैं। टिप्पणियों और लेखों के मामले में, आप संबंध का वर्णन इस प्रकार कर सकते हैं:

  • प्रत्येक टिप्पणी एक लेख से संबंधित है।
  • एक लेख पर कई टिप्पणियाँ हो सकती हैं.

वास्तव में, यह उस सिंटैक्स के बहुत करीब है जिसका उपयोग रेल इस कनेक्शन को घोषित करने के लिए करता है। आप पहले ही टिप्पणी मॉडल (app/models/comment.rb) में कोड की पंक्ति देख चुके हैं जो प्रत्येक टिप्पणी को एक लेख से संबंधित बनाती है:

कक्षा टिप्पणी< ApplicationRecord belongs_to:article end

लिंक का दूसरा पक्ष जोड़ने के लिए आपको ऐप/मॉडल/आर्टिकल.आरबी को संपादित करना होगा:

वर्ग लेख< ApplicationRecord has_many:comments validates:title, presence: true, length: { minimum: 5 } [...] end

ये दो घोषणाएं स्वचालित रूप से बड़ी संख्या में संभावनाएं उपलब्ध कराती हैं। उदाहरण के लिए, यदि आपके पास @article इंस्टेंस वेरिएबल है जिसमें एक लेख है, तो आप @article.comments पर कॉल करके उस लेख से संबंधित सभी टिप्पणियाँ एक सरणी में प्राप्त कर सकते हैं।

6.3. टिप्पणियों के लिए एक मार्ग जोड़ा जा रहा है

स्वागत नियंत्रक की तरह, हमें एक मार्ग जोड़ने की आवश्यकता है ताकि रेल को पता चले कि टिप्पणियाँ देखने के लिए हम किस पते पर जाना चाहते हैं। config/routes.rb फ़ाइल को दोबारा खोलें और इसे निम्नानुसार संपादित करें:

संसाधन:लेख संसाधन करते हैं:टिप्पणियाँ समाप्त होती हैं

इससे इस तरह की टिप्पणियाँ उत्पन्न होंगी नेस्टेड संसाधनलेखों में. यह लेखों और टिप्पणियों के बीच मौजूद पदानुक्रमित संबंधों को पकड़ने का दूसरा पक्ष है।

6.4. एक नियंत्रक उत्पन्न करना

मॉडल के बाद, आइए अपना ध्यान उपयुक्त नियंत्रक बनाने पर केंद्रित करें। हम फिर से उसी जनरेटर का उपयोग करेंगे जिसका उपयोग हमने पहले किया था:

$ रेल नियंत्रक टिप्पणियाँ उत्पन्न करते हैं

चार फ़ाइलें और एक खाली निर्देशिका बनाई जाएगी:

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

सबसे पहले हम एक नई टिप्पणी जोड़ने की अनुमति देने के लिए आर्टिकल शो टेम्पलेट (app/views/articles/show.html.erb) का विस्तार करेंगे:

शीर्षक: <%= @article.title %>

मूलपाठ: <%= @article.text %>

एक टिप्पणी जोड़ने:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

यह आलेख प्रदर्शन पृष्ठ पर एक फॉर्म जोड़ देगा जो CommentsController पर निर्माण क्रिया को कॉल करने पर एक नई टिप्पणी बनाता है। यहां form_with कॉल एक सरणी का उपयोग करता है, जो /articles/1/comments जैसे नेस्टेड रूट बनाएगा।

आइए app/controllers/comments_controller.rb में create लिखें:

क्लास टिप्पणियाँ नियंत्रक< ApplicationController def create @article = Article.find(params[:article_id]) @comment = @article.comments.create(comment_params) redirect_to article_path(@article) end private def comment_params params.require(:comment).permit(:commenter, :body) end end

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

इसके अलावा, कोड कनेक्शन के लिए उपलब्ध कुछ तरीकों का लाभ उठाता है। हम टिप्पणी बनाने और सहेजने के लिए @article.comments पर create विधि का उपयोग करते हैं। यह स्वचालित रूप से टिप्पणी को लिंक करता है ताकि यह एक विशिष्ट लेख से संबंधित हो।

एक बार जब हम एक नई टिप्पणी बना लेते हैं, तो हम आर्टिकल_पथ (@article) सहायक का उपयोग करके उपयोगकर्ता को मूल लेख पर वापस ले जाते हैं। जैसा कि हम पहले ही देख चुके हैं, यह आर्टिकल्सकंट्रोलर पर शो एक्शन को कॉल करता है, जो बदले में show.html.erb टेम्पलेट प्रस्तुत करता है। यह वह जगह है जहां हम टिप्पणियाँ प्रदर्शित करना चाहते हैं, तो आइए निम्नलिखित को app/views/articles/show.html.erb में जोड़ें।

शीर्षक: <%= @article.title %>

मूलपाठ: <%= @article.text %>

टिप्पणियाँ

<% @article.comments.each do |comment| %>

टिप्पणीकार: <%= comment.commenter %>

टिप्पणी: <%= comment.body %>

<% end %>

एक टिप्पणी जोड़ने:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

अब आप अपने ब्लॉग में लेख और टिप्पणियाँ जोड़ सकते हैं और उन्हें सही स्थानों पर प्रदर्शित कर सकते हैं।

पुनर्रचना

अब जबकि हमारे पास कामकाजी लेख और टिप्पणियाँ हैं, तो आइए ऐप/व्यू/आर्टिकल्स/शो.html.erb टेम्पलेट पर एक नज़र डालें। यह लंबा और असुविधाजनक हो गया. आइए इसे राहत देने के लिए आंशिक का उपयोग करें।

7.1. आंशिक भागों का संग्रह प्रस्तुत करना

सबसे पहले, हम एक लेख के लिए सभी टिप्पणियाँ दिखाते हुए एक आंशिक टिप्पणी करेंगे। एक फ़ाइल app/views/comments/_comment.html.erb बनाएं और उसमें निम्नलिखित डालें:

टिप्पणीकार: <%= comment.commenter %>

टिप्पणी: <%= comment.body %>

फिर आप ऐप/व्यू/आर्टिकल्स/शो.html.erb को इस तरह बदल सकते हैं:

शीर्षक: <%= @article.title %>

मूलपाठ: <%= @article.text %>

टिप्पणियाँ

<%= render @article.comments %>

एक टिप्पणी जोड़ने:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

यह अब @article.comments संग्रह में प्रत्येक टिप्पणी के लिए ऐप/व्यू/comments/_comment.html.erb को एक बार आंशिक रूप से प्रस्तुत करेगा। चूँकि रेंडर विधि @article.comments संग्रह के माध्यम से पुनरावृत्त होती है, यह प्रत्येक टिप्पणी को आंशिक की तरह नामित एक स्थानीय चर को निर्दिष्ट करती है, इस मामले में टिप्पणी, जो प्रदर्शन के लिए आंशिक रूप में हमारे लिए उपलब्ध है।

7.2. किसी प्रपत्र को आंशिक रूप में प्रस्तुत करना

आइए नए टिप्पणी अनुभाग को भी अपने आंशिक में स्थानांतरित करें। दोबारा, एक फ़ाइल ऐप/व्यू/टिप्पणियाँ/_form.html.erb बनाएं जिसमें शामिल हो:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %>

फिर ऐप/व्यू/आर्टिकल्स/शो.html.erb को इस तरह बदलें:

शीर्षक: <%= @article.title %>

मूलपाठ: <%= @article.text %>

टिप्पणियाँ

<%= render @article.comments %>

एक टिप्पणी जोड़ने:

<%= render "comments/form" %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

दूसरा रेंडर उस आंशिक टेम्पलेट को परिभाषित करता है जिसे हम रेंडर करना चाहते हैं, टिप्पणियाँ/फ़ॉर्म। रेल्स इतनी स्मार्ट है कि इस लाइन पर अंडरस्कोर लगा सकती है और समझ सकती है कि आप ऐप/व्यू/टिप्पणियाँ निर्देशिका में _form.html.erb फ़ाइल को रेंडर करना चाहते थे।

@आर्टिकल ऑब्जेक्ट दृश्य में प्रस्तुत किसी भी आंशिक भाग में उपलब्ध है, क्योंकि हमने इसे एक इंस्टेंस वेरिएबल के रूप में परिभाषित किया है।

टिप्पणियाँ हटाना

ब्लॉग की एक अन्य महत्वपूर्ण विशेषता स्पैम हटाने की क्षमता है। ऐसा करने के लिए, आपको दृश्य में कुछ लिंक और CommentsController में एक नष्ट कार्रवाई सम्मिलित करनी होगी।

टिप्पणीकार: <%= comment.commenter %>

टिप्पणी: <%= comment.body %>

<%= link_to "Destroy Comment", , method: :delete, data: { confirm: "Are you sure?" } %>

इसे दबा रहे हैं नया लिंक"टिप्पणी नष्ट करें" हमारे CommentsController में DELETE /articles/:article_id/comments/:id चलाएगा, जिसका उपयोग उस टिप्पणी को ढूंढने के लिए किया जाएगा जिसे हम हटाना चाहते हैं, तो आइए हमारे नियंत्रक (ऐप/नियंत्रक/comments_controller) में एक नष्ट कार्रवाई जोड़ें .आरबी) :

क्लास टिप्पणियाँ नियंत्रक< ApplicationController def create @article = Article.find(params[:article_id]) @comment = @article.comments.create(comment_params) redirect_to article_path(@article) end def destroy @article = Article.find(params[:article_id]) @comment = @article.comments.find(params[:id]) @comment.destroy redirect_to article_path(@article) end private def comment_params params.require(:comment).permit(:commenter, :body) end end

नष्ट करने की कार्रवाई उस लेख को ढूंढेगी जिसे हम देख रहे हैं, @article.comments संग्रह में टिप्पणी ढूंढें, और फिर इसे डेटाबेस से हटा दें और हमें लेख देखने के लिए वापस लौटा दें।

8.1. संबंधित वस्तुओं को हटाना

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

वर्ग लेख< ApplicationRecord has_many:comments, dependent: :destroy validates:title, presence: true, length: { minimum: 5 } [...] end

सुरक्षा

9.1. बुनियादी प्रमाणीकरण

यदि आप अपना ब्लॉग ऑनलाइन प्रकाशित करते हैं, तो कोई भी लेख जोड़, संपादित और हटा सकता है या टिप्पणियाँ हटा सकता है।

रेल एक बुनियादी HTTP प्रमाणीकरण प्रणाली प्रदान करती है जो इस स्थिति में अच्छी तरह से काम करती है।

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

प्रमाणीकरण प्रणाली का उपयोग करने के लिए, हम इसे ऐप/कंट्रोलर/आर्टिकल्स_कंट्रोलर.आरबी में हमारे आर्टिकल्सकंट्रोलर के शीर्ष पर परिभाषित करेंगे। हमारे मामले में, हम चाहते हैं कि उपयोगकर्ता इंडेक्स और शो को छोड़कर हर कार्रवाई के लिए प्रमाणित हो, इसलिए हम इसे इस तरह लिखेंगे:

क्लास आर्टिकल्सकंट्रोलर< ApplicationController http_basic_authenticate_with name: "dhh", password: "secret", except: [:index, :show] def index @articles = Article.all end # пропущено для краткости

हम केवल प्रमाणित उपयोगकर्ताओं को ही टिप्पणियाँ हटाने की अनुमति देना चाहते हैं, इसलिए CommentsController (app/controllers/comments_controller.rb) में हम लिखेंगे:

क्लास टिप्पणियाँ नियंत्रक< ApplicationController http_basic_authenticate_with name: "dhh", password: "secret", only: :destroy def create @article = Article.find(params[:article_id]) # ... end # пропущено для краткости

अब, यदि आप एक नया लेख बनाने का प्रयास करते हैं, तो आपको एक HTTP बेसिक प्रमाणीकरण कॉल का सामना करना पड़ेगा:

रेल अनुप्रयोगों के लिए अन्य प्रमाणीकरण विधियाँ भी उपलब्ध हैं। रेल्स के लिए दो लोकप्रिय ऐड-ऑन डेविस और ऑथलॉजिक हैं।

9.2. सुरक्षा पर अन्य विचार

सुरक्षा, विशेष रूप से वेब अनुप्रयोगों में, एक व्यापक और विस्तृत क्षेत्र है। आपके रेल एप्लिकेशन की सुरक्षा को रेल अनुप्रयोगों की सुरक्षा गाइड में अधिक विस्तार से शामिल किया गया है। रेल के साथ काम करने का सबसे सरल तरीका सभी बाहरी डेटा को UTF-8 में संग्रहीत करना है। यदि नहीं, तो रूबी और रेल्स लाइब्रेरी अक्सर आपके मूल डेटा को यूटीएफ -8 में परिवर्तित करने में सक्षम होंगे, लेकिन यह हमेशा विश्वसनीय रूप से काम नहीं करता है, इसलिए यह सुनिश्चित करना सबसे अच्छा है कि सभी बाहरी डेटा यूटीएफ -8 है।

यदि आप इस क्षेत्र में कोई त्रुटि करते हैं, तो सबसे आम लक्षण ब्राउज़र में एक प्रश्न चिह्न के साथ एक काला हीरा दिखाई देना है। एक अन्य सामान्य लक्षण "ü" के स्थान पर "ü" जैसे प्रतीक दिखना है। समस्याओं के सामान्य मामलों को कम करने के लिए रेल कई आंतरिक कदम उठाती है जिनका स्वचालित रूप से पता लगाया जा सकता है और ठीक किया जा सकता है। हालाँकि, यदि कोई बाहरी डेटा है जो UTF-8 में संग्रहीत नहीं है, तो इससे इस प्रकार की समस्याएं हो सकती हैं जिनका रेल स्वचालित रूप से पता नहीं लगा सकता और ठीक नहीं कर सकता।

दो सबसे आम डेटा स्रोत जो UTF-8 में नहीं हैं वे हैं:

  • आपका पाठ संपादक: अधिकांश टेक्स्ट संपादक (जैसे टेक्स्टमैट) फ़ाइलों को डिफ़ॉल्ट रूप से यूटीएफ-8 के रूप में सहेजते हैं। यदि आपका टेक्स्ट एडिटर ऐसा नहीं करता है, तो इससे आपके पैटर्न में दर्ज विशेष वर्ण (जैसे é) ब्राउज़र में प्रश्न चिह्न के साथ हीरे के रूप में दिखाई दे सकते हैं। यह आपकी i18N अनुवाद फ़ाइलों पर भी लागू होता है। अधिकांश संपादक जो UTF-8 को डिफ़ॉल्ट नहीं करते हैं (जैसे कि ड्रीमविवर के कुछ संस्करण) डिफ़ॉल्ट को UTF-8 में बदलने का एक तरीका प्रदान करते हैं। इसे करें।
  • आपका डेटाबेस: डिफ़ॉल्ट रूप से रेल आपके डेटाबेस से डेटा को किनारे पर UTF-8 में परिवर्तित करता है। हालाँकि, यदि आपका डेटाबेस आंतरिक रूप से UTF-8 का उपयोग नहीं करता है, तो यह आपके उपयोगकर्ता द्वारा दर्ज किए गए सभी वर्णों को संग्रहीत करने में सक्षम नहीं हो सकता है। उदाहरण के लिए, यदि आपका डेटाबेस आंतरिक रूप से लैटिन-1 का उपयोग करता है, और आपका उपयोगकर्ता रूसी, हिब्रू, या जापानी अक्षरों में प्रवेश करता है, तो डेटाबेस में प्रवेश करते ही डेटा खो जाएगा। यदि संभव हो, तो अपने डेटाबेस में आंतरिक भंडारण के रूप में UTF-8 का उपयोग करें।

मेरे कई डेवलपर मित्रों ने रेल के बारे में अत्यधिक बातें कीं, लेकिन मैं समझ नहीं पाया कि ऐसा क्यों है। रेल्स क्या है और यह रूबी ऑन रेल्स से किस प्रकार भिन्न है? सीखना कितना कठिन है? क्या यह भी एक प्रोग्रामिंग भाषा है? रूबी ऑन रेल्स सीखने से पहले मुझे क्या जानना चाहिए?

ये और कई अन्य प्रश्न लगातार मेरे दिमाग में घूम रहे थे, लेकिन, जैसा कि बाद में पता चला, मैं अकेला नहीं था। हमारे पाठक भी इस अंक में रुचि रखते थे, इसलिए इसके बारे में और अधिक जानने के लिए, मैंने अपने एक सहकर्मी से रूबी के बारे में कुछ बुनियादी प्रश्न पूछने का निर्णय लिया। इस तरह इस लेख का जन्म हुआ.

आप तैयार हैं? जाना!

रूबी ऑन रेल्स के बारे में 13 तथ्य - आपको क्या जानना चाहिए?

1. रेल क्या है?

रेल्स एक वेब एप्लिकेशन फ्रेमवर्क है जिसे रूबी भाषा में कोड लिखने के लिए डिज़ाइन किया गया है। भ्रमित करने वाला लगता है, है ना?

फिर से कोशिश करते है। रूबी नामक एक प्रोग्रामिंग भाषा है। इस पर लिखना ख़ुशी की बात है. वैसे, इसे बनाने वाले ने कहा कि उसका मुख्य लक्ष्य एक ऐसी भाषा बनाना था जो प्रोग्रामर के जीवन को बेहतर बनाए। क्या यह अद्भुत नहीं है?

मैं आपको एक उदाहरण देता हूं।

अगर मैं PHP में स्क्रीन पर टेक्स्ट प्रदर्शित करना चाहता हूं, तो मुझे लिखना होगा

प्रतिध्वनि "हैलो वर्ल्ड";

अर्धविराम देखें? और यह "प्रतिध्वनि" - इसका क्या मतलब है?

दूसरी ओर, अगर मुझे रूबी में वही काम करने की ज़रूरत है, तो मुझे निम्नलिखित लिखना होगा:

"हैलो वर्ल्ड" डालता है

इसमें कोई अर्धविराम नहीं है, और हालांकि "पुट" थोड़ा बचकाना लग सकता है, यह मेरे लिए "गूंज" की तुलना में अधिक मायने रखता है। जब आप कोड लिखने में घंटों बिताते हैं, तो इस तरह के छोटे-छोटे विवरण बड़ा अंतर पैदा करते हैं।

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

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

"हैलो वर्ल्ड" डालता है

फिर HTML दस्तावेज़ में, आपको संपूर्ण पाठ दिखाई देगा। लेकिन मैं चाहता हूं कि आप केवल यही देखें:

हैलो वर्ल्ड

सीधे शब्दों में कहें तो रेल आपको ऐसा करने की अनुमति देती है। लेकिन वह सब नहीं है।

2. रूबी ऑन रेल्स क्या है?

रूबी ऑन रेल्स, रेल्स फ्रेमवर्क का पूर्ण आधिकारिक नाम है। लेकिन बातचीत में, डेवलपर्स आमतौर पर पहला भाग नहीं कहते हैं, और बस इसे रेल कहते हैं। इसलिए यदि आप "ऑन" होना चाहते हैं और तकनीक प्रेमी दिखना चाहते हैं, तो आपको निश्चित रूप से इसे रेल्स कहना चाहिए, लेकिन याद रखें कि पहला भाग - "रूबी ऑन" - का क्या मतलब है।

3. मैंने सुना है कि रेल्स शुरुआती लोगों के लिए बहुत अच्छी है। क्यों?

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

शुरुआती लोगों के लिए रेल इतनी मज़ेदार क्यों है? यह बिल्कुल स्थिर है और आपके लिए बहुत बड़ा काम करता है।

मेरे लिए रेल पर काम करना ट्रक चलाने जैसा है। यह अविश्वसनीय रूप से शक्तिशाली है, बस अपनी ओर देखें - आप एक ट्रक चला रहे हैं!!! हालाँकि, आप कितनी अच्छी तरह जानते हैं कि जिस कार को आप चलाते हैं वह कैसे काम करती है?

तथ्य यह है कि रेल्स बहुत सारे कार्यों का ध्यान रखती है, उन्हें आपके लिए करने से आप तुरंत बहुत सारे अच्छे लाभों का आनंद ले सकेंगे। हालाँकि, कभी-कभी यह आपके विरुद्ध भी काम कर सकता है यदि कभी-कभी आप खुद से आगे निकल जाते हैं और उन बुनियादी बातों को पूरी तरह से नहीं सीखते हैं जो आपको पता होनी चाहिए।

इस कारण से, रूबी ऑन रेल्स को शुरू से सीखना बहुत महत्वपूर्ण है। और सबसे महत्वपूर्ण बात, आपको यह सुनिश्चित करना चाहिए कि आप रूबी के साथ काम करने में वास्तव में सहज हैं। अन्यथा, आप आधे रास्ते में ही उस ट्रक से बाहर निकल जाएंगे और अपने आप से कहेंगे, "रुको, क्या मैं सचमुच इसे चला रहा था?"

4. रेल्स डेवलपर और रूबी डेवलपर के बीच क्या अंतर है?

औपचारिक रूप से, अंतर यह है कि एक शुद्ध "रूबी डेवलपर" रूबी में एप्लिकेशन बनाएगा, लेकिन रेल में नहीं। हालाँकि, एक नियम के रूप में, ऐसा नहीं होता है। सिनात्रा जैसे अन्य फ्रेमवर्क का उपयोग करके रूबी में वेब एप्लिकेशन बनाना निश्चित रूप से संभव है, लेकिन मैं शर्त लगा सकता हूं कि 99% मामलों में आपको केवल रूबी प्रोग्रामर के रूप में नियुक्त किए जाने की संभावना नहीं है। इसलिए, आपको किसी भी स्थिति में रेल सीखने की आवश्यकता है।

5. मुझे रूबी को कितनी अच्छी तरह जानना चाहिए? अपना प्रशिक्षण शुरू करने से पहले मुझे क्या सीखना चाहिए?

इस पर राय अलग-अलग है, लेकिन बड़े ट्रक के उदाहरण को ध्यान में रखते हुए, मुझे लगता है कि रेल्स में गहराई से उतरने के लिए आपको रूबी के साथ सहज होने की जरूरत है। जैसे, कहें, कार में जाने से पहले साइकिल चलाना सीखना बेहतर है, और फिर ट्रक चलाने के बारे में सोचें।

और यहाँ एक और बात है. रेल पर काम करते समय रूबी में कोड लिखने में बहुत समय व्यतीत होगा। इस कारण से, आपको इस भाषा को अच्छी तरह से जानना होगा, विशेष रूप से इसकी मूल बातें: डेटा प्रकार, विधियां, ऑब्जेक्ट ओरिएंटेशन, डिबगिंग और बहुत कुछ। और आपको बेहद अनुभवी रूबी प्रोग्रामर होने की ज़रूरत नहीं है - आपको बस इसके साथ काम करते समय आत्मविश्वास महसूस करने की ज़रूरत है, जैसे पानी में बत्तख।

6. मुझे रेल्स क्यों सीखनी चाहिए? इसे क्या खास बनाता है?

यह उत्तम और आश्चर्यजनक है। आपको और क्या जानने की जरूरत है? जब रेल्स पहली बार सामने आई, तो यह डिज़ाइन कला की एक वास्तविक खोज और उपलब्धि बन गई। जब इसे बनाया गया था तब सर्वोत्तम प्रथाओं को ध्यान में रखते हुए, रेल व्यावहारिक रूप से आपको महान कोड लिखने के मार्ग पर ले जाती है, तब भी जब आप नहीं चाहते (या नहीं जानते कि कैसे)।

यदि आप मजबूत वेब एप्लिकेशन बनाना चाहते हैं जो भविष्य में रखरखाव में आसान होने के साथ-साथ आवश्यकतानुसार विकसित होंगे, तो रेल एक बढ़िया विकल्प है। साथ ही, यह कई अच्छी कंपनियों के बीच लोकप्रिय है। स्टार्टअप्स के बीच रेल्स के इतने लोकप्रिय होने का आखिरी बड़ा कारण यह है कि यह रैपिड प्रोटोटाइपिंग के लिए बहुत अच्छा है। कुछ ही घंटों में आप अपने लिए आवश्यक रेल एप्लिकेशन की कल्पना कर सकते हैं, बना सकते हैं और लॉन्च कर सकते हैं। वास्तव में बहुत कम अन्य ढाँचे हैं जो इसे संभाल सकते हैं।

7. आप रेल से क्या बना सकते हैं?

आप क्या बनाना चाहते हैं? रेल किसी भी वेब एप्लिकेशन के लिए उपयुक्त है। स्पष्ट करने के लिए, रेल्स के साथ निर्मित साइटों के इन महान उदाहरणों को देखें: हुलु, एयरबीएनबी और बेसकैंप।

8. क्या मैं रेल्स का उपयोग करके मोबाइल एप्लिकेशन बना सकता हूँ?

हां और ना। आप रेल्स के साथ मोबाइल एप्लिकेशन नहीं बना पाएंगे, लेकिन रेल्स के साथ आप निश्चित रूप से एक वेब एप्लिकेशन बना सकते हैं और इसे बैक-एंड के रूप में उपयोग कर सकते हैं मोबाइल एप्लिकेशन.

रूबीमोशन नामक एक टूल भी है जो रूबी (लेकिन रेल्स नहीं) में देशी आईओएस और एंड्रॉइड ऐप बनाना बहुत आसान बनाता है। यानी, आप ऐप स्टोर के लिए मोबाइल एप्लिकेशन बनाने के लिए विशेष रूप से रेल का उपयोग नहीं करेंगे, लेकिन रेल निश्चित रूप से आपके मोबाइल प्रोजेक्ट का एक महत्वपूर्ण घटक हो सकता है। मुझे उम्मीद है कि तस्वीर अब साफ हो गई है.

9. रूबी ऑन रेल्स - मुझे किस तरह का काम मिल सकता है?

रेल इन दिनों सबसे अधिक मांग वाले कौशलों में से एक है, इसलिए काम करने के लिए चुनने के लिए बहुत सारी कंपनियां हैं। ज़र्न जैसे स्टार्टअप विशेष रूप से रेल्स को पसंद करते हैं। यह एक स्टार्ट-अप गैर-लाभकारी शैक्षिक आईटी कंपनी है। आप ब्लूमबर्ग जैसी बड़ी कंपनी भी चुन सकते हैं और उन साइटों और एप्लिकेशन के विकास में भाग ले सकते हैं जिनका उपयोग लाखों उपयोगकर्ताओं द्वारा किया जाता है। रेल डेवलपर्स के लिए फ्रीलांसिंग भी एक अच्छा विकल्प है। स्वतंत्र होने के कारण, आप यह चुनने में सक्षम होंगे कि आप किन परियोजनाओं में भाग लेना चाहते हैं: छोटी और अल्पकालिक या गंभीर और दीर्घकालिक।

10. मैंने दूसरी प्रोग्रामिंग भाषा आज़माई, लेकिन मुझे यह पसंद नहीं आई। क्या मुझे रेल्स आज़माना चाहिए?

मैं फिर से जोर देना चाहता हूं - रेल वास्तव में एक प्रोग्रामिंग भाषा नहीं है, बल्कि एक ढांचा है। यदि आपने कभी सोचा है कि क्या किसी प्रोग्रामिंग भाषा से प्यार करने की कोशिश करने का कोई मतलब है, तो मैं बस इतना कह सकता हूं कि रूबी दुनिया में सबसे प्रतिष्ठित और उपयोगकर्ता द्वारा पसंद की जाने वाली प्रोग्रामिंग भाषा है। इसलिए जब तक आप रूबी को आज़मा नहीं लेते, मैं प्रोग्रामिंग बंद नहीं करूंगा।

11. क्या मुझे रेल्स के साथ-साथ जावास्क्रिप्ट भी सीखनी चाहिए?

इसके बजाय - नहीं. इसके अतिरिक्त - निस्संदेह।

एक रेल डेवलपर को जावास्क्रिप्ट() सीखना होगा। रेल सीखने के लिए यह कोई आवश्यकता नहीं है, बल्कि यह एक ऐसा कौशल है जिसकी आपको सीखने के दौरान आवश्यकता होगी।

आइए ईमानदार रहें, जैसे-जैसे आप धीरे-धीरे तकनीकी क्षेत्र में गहराई से उतरेंगे, आपको एहसास होना शुरू हो जाएगा कि आपके पास काफी कौशल होना चाहिए (मूल रूप से, इसका मतलब है कि हर किसी को फुल-स्टैक डेवलपर बनने का प्रयास करना चाहिए)। सौभाग्य से, जैसे-जैसे आप अनुभव प्राप्त करेंगे, आपके लिए नई भाषाएँ और नए ढाँचे दोनों सीखना आसान हो जाएगा।

जहां तक ​​जावास्क्रिप्ट या रेल्स चुनने का सवाल है, मैं आपको सीधे बताऊंगा कि आप किसी भी तरह से गलत नहीं हो सकते। मुझे लगता है कि रूबी को जावास्क्रिप्ट की तुलना में सीखना बहुत आसान है। इसके अलावा, मैं ऐसे कई लोगों को जानता हूं जिन्होंने पहली बार रूबी सीखने के बाद जावास्क्रिप्ट को आसान पाया। लेकिन, जैसा कि मैंने ऊपर कहा, यदि आप दोनों का अध्ययन करते हैं तो आप निश्चित रूप से गलत नहीं हो सकते।

12. प्रशिक्षण में कितना समय लगेगा?

आपको प्रति दिन कितना समय पढ़ाई में लगाना होगा? मेरा मानना ​​है कि रेल की अच्छी समझ के लिए कई महीनों के समर्पित प्रशिक्षण की आवश्यकता होती है। लेकिन किसी भी अन्य कौशल की तरह, रेल्स प्रोफेशनल बनने के लिए आपको हजारों घंटों की आवश्यकता होगी, इसलिए अभी शुरुआत करना सबसे अच्छा है।

आपकी सीखने की गति सामान्यतः प्रोग्रामिंग के क्षेत्र में आपके ज्ञान के स्तर से काफी प्रभावित होगी। लेकिन यदि आप पूरी तरह से नौसिखिया हैं, तो रूबी और रेल्स से शुरुआत करना उचित है।

13. रूबी ऑन रेल्स - कहां से शुरू करें?

मैं आज उपलब्ध सर्वोत्तम रूबी ऑन रेल्स पाठ्यक्रम से शुरुआत करने की सलाह देता हूँ। यदि आपने अपने जीवन में कोड की एक पंक्ति भी नहीं लिखी है, तो सबसे पहले आपको HTML और CSS पाठ्यक्रम लेना चाहिए। सौभाग्य से, HTML और CSS पर पाठ्यक्रम ढूँढना काफी आसान है। उसके बाद, आपको रूबी, गिट और कमांड लाइन सीखने की आवश्यकता होगी।

प्रशिक्षण कार्यक्रम आम तौर पर आपको धीरे-धीरे रेल्स से परिचित कराएगा, आपको दिखाएगा कि सिनात्रा और एक्टिवरिकॉर्ड के साथ कैसे काम करना है। यह आपको अभी तक कुछ नहीं बताता है, लेकिन मुद्दा यह है कि इससे पहले कि आप उस "ट्रक" को चलाएं जिसका मैंने पहले उल्लेख किया था, आपको कुछ सरल रेल ड्राइविंग पाठ्यक्रमों से शुरुआत करनी चाहिए।

पढ़ाई करते समय सबसे अच्छी बात यह है कि अपना खुद का प्रोजेक्ट बनाएं, किसी चीज़ पर काम करें और विकास करें, जानें कि आप सही दिशा में आगे बढ़ रहे हैं, और आपको अच्छा समर्थन भी मिले! सीखने की प्रक्रिया के दौरान, आपके पास लाखों छोटे-छोटे प्रश्न होंगे, और आपको लक्ष्य हासिल करने होंगे सर्वोत्तम परिणामयह महत्वपूर्ण है कि आपके पास कोई ऐसा व्यक्ति हो जो इसका पता लगाने में आपकी मदद कर सके और कठिनाइयाँ आने पर आपको कुछ सलाह दे सके।

अलेक्जेंडर "सफलता की वेब प्रयोगशाला" वेबसाइट परियोजना के संस्थापक हैं, जो शुरुआती और निरंतर इंटरनेट उद्यमियों का समर्थन करने के लिए बनाई गई है। वह एक ऑनलाइन पत्रिका के संपादकीय कार्यालय के प्रबंधन, अपने स्वयं के ऑनलाइन स्टोर बनाने और प्रबंधित करने में पेशेवर अनुभव के साथ एक आश्वस्त वर्कहॉलिक है। मुख्य व्यवसाय: फेसबुक और गूगल एडवर्ड्स के माध्यम से व्यवसायों (ऑनलाइन स्टोर सहित) को बढ़ावा देना। मुख्य शौक: सहबद्ध विपणन टूल के माध्यम से वेबसाइटों से कमाई करना गूगल ऐडसेंस. व्यक्तिगत पुष्टि किए गए रिकॉर्ड: प्रति माह 3 मिलियन ब्लॉग विज़िटर।

इसमें पाई गई कई चीजों का अध्ययन करके लेखक को यह पाठ लिखने के लिए प्रेरित किया गया वैश्विक नेटवर्कऐसी सामग्रियाँ जिन्हें समान शीर्षक/टैग के अंतर्गत निर्दिष्ट किया जा सकता है: मैंने रूबी को कैसे सीखा?(या रूबी ऑन रेल्स, पीएचपी, जेएस, सी++, आदि) तीन दिनों के लिए.

या कुछ इस तरह का। बदले में, लेखक ने तुरंत कई उपाख्यानों (अनियंत्रित संघों) को याद किया, जो एक सामान्य विषय द्वारा फिर से एकजुट हुए, जिसमें उन कार्यों का मूल्यांकनात्मक लक्षण वर्णन शामिल है जो मूर्खतापूर्ण ढंग से किए जा सकते हैं... रूसी भाषा शक्तिशाली और अविश्वसनीय रूप से कामोत्तेजक है, लेकिन , दुर्भाग्य से, इन उत्कृष्ट कृतियों को यहाँ उद्धृत करना संभव नहीं लगता; तदनुसार, पाठक के ध्यान में श्रृंखला से दस्तावेज़ का व्यक्तिगत रूप से लिखित संस्करण पेश करने के अलावा और कुछ नहीं बचा है रूबी ऑन रेल्स में आनंदपूर्वक और अपेक्षाकृत जल्दी काम करना कैसे सीखें.

लेख में वर्णित कोड का एक कामकाजी उदाहरण, अन्य रेल उदाहरणों के बीच, हमेशा लेखक के परीक्षण ब्लॉग Herokuapp.com पर पाया जा सकता है, स्वागत है।

तकनीक सरल है, और लेखक यहां किसी खोजकर्ता की प्रशंसा का दावा बिल्कुल नहीं करता है: यह आवश्यक है कि यह दिलचस्प हो, और परिणाम आपको इंतजार नहीं कराएंगे। अपनी कमजोरियों पर खेलने का प्रयास करने में कोई हर्ज नहीं है, क्योंकि कभी-कभी घमंड भी हित में लाभदायक हो सकता है; विकास के परिणाम ऐसे होने चाहिए कि उन्हें इंटरनेट पर पाठकों, मित्रों और सहकर्मियों के सामने गर्व से प्रस्तुत किया जा सके, कहीं न कहीं तैनात किया जा सके हेरोकूया वीरांगना, यह भी - ताकि हम बार-बार उनके पास लौट सकें, पुनर्निर्माण और सुधार कर सकें, फ़ोरम और स्टैकऑवरफ़्लो हम सभी की मदद करते हैं। तो मैं कहता हूं, पहले अपना ब्लॉग क्यों न लिखें रूबी ऑन रेल्स?

मेरा सुझाव है कि शुरुआती लोगों के लिए रेल्स के साथ शुरुआत करना उत्कृष्ट डॉकेट या रेल्स के रूसी-भाषा अनुकूलन से शुरू करें, साथ ही रूबी ऑन रेल्स के साथ एक ब्लॉग बनाएं, और इस ब्लॉग की सामग्री, जिसके लिंक बाएं साइडबार में आसानी से पाए जा सकते हैं, कर सकते हैं मदद भी करें. और फिर - बस इतना ही, फिर जादू, सबसे पहले सब कुछ ऐसे निर्धारित किया जाता है जैसे नोट्स द्वारा, कंसोल खोलें - और आगे... लेखक इसे आसान बनाने के लिए डिज़ाइन किए गए केवल कुछ स्पष्टीकरण और तकनीकी सिफारिशें करना अपना कर्तव्य समझता है फोर्स के लाइट साइड को खोजने और हासिल करने में माहिर, और अब टोगो नहीं। यह केवल आपकी लड़ाई है, साहसपूर्वक आगे बढ़ें और विजयी होकर लौटें।

इसलिए। पहले मैनुअल का चरण-दर-चरण पूरी तरह से कैलिब्रेट किया गया है और, मुझे आशा है, इससे आपको कोई परेशानी नहीं होगी; आपके लिए बस इतना आवश्यक है कि आप सावधान रहें, विस्तृत चरणों को ईमानदारी से दोहराते रहें... और एक घंटे के बाद आपका पहला ब्लॉग तैयार हो जाता है, आप एक ब्रेक ले सकते हैं और दूसरे पर आगे बढ़ सकते हैं, जो कुछ हद तक अधिक दिलचस्प है। और यहीं पर, शायद, सलाह के कुछ बिदाई वाले शब्द काम आ सकते हैं, जिस पर अब हम आगे बढ़ेंगे।

आइए इस कथन से शुरू करें कि ये विधियां नीचे दिखाए गए जैसा दिखने में काफी सक्षम हैं (एक विकल्प के रूप में), लेकिन किसी भी तरह से मूल के समान नहीं हैं:

ऐप/कंट्रोलर/पोस्ट_कंट्रोलर.आरबी

# अपडेट एक्शन पोस्ट को नई जानकारी के साथ अपडेट करता है, यदि @post.update_attributes(post_params) फ़्लैश[:नोटिस] = "सफलतापूर्वक अपडेट किया गया पोस्ट!" रीडायरेक्ट_टू पोस्ट_पथ अन्यथा फ्लैश[:अलर्ट] = "पोस्ट अपडेट करने में त्रुटि!" रेंडर: एडिट एंड एंड # शो एक्शन आईडी को पुनः प्राप्त करने के बाद अलग-अलग पोस्ट को रेंडर करता है शो एंड # डिस्ट्रॉय एक्शन पोस्ट को डेटाबेस से स्थायी रूप से हटा देता है डिस्ट्रॉय @पोस्ट = पोस्ट.फाइंड(पैराम्स[:आईडी]) अगर @पोस्ट। फ़्लैश नष्ट करें[:नोटिस] = "सफलतापूर्वक हटाई गई पोस्ट!" रीडायरेक्ट_टू पोस्ट_पथ अन्यथा फ्लैश[:अलर्ट] = "पोस्ट अपडेट करने में त्रुटि!" अंत अंत

लेकिन यह और वह प्रयास करें, क्यों नहीं। पर चलते हैं।

दूसरा ब्लॉग, हालांकि अधिक जटिल (लेख संपादक जोड़ा गया)। सीके संपादकऔर चिंतन करना, रेल अनुप्रयोगों में प्रमाणीकरण के लिए एक लचीला उपकरण), किसी कारण से मूल में टिप्पणियाँ छोड़ने की क्षमता का अभाव है। आपको यह कमी स्वयं ही पूरी करनी होगी: पहले ब्लॉग को बनाने के विवरण के अनुरूप आगे बढ़ें, केवल बहुत ही मामूली बदलावों की आवश्यकता होगी: सीधे शब्दों में कहें तो इसके बजाय लेखऔर सामग्रीआपके पास पहला ब्लॉग होगा डाकऔर पदोंदूसरे ब्लॉग में, मूलतः यही अंतर है। सावधान रहें और सब कुछ ठीक हो जाएगा।

रीकैप्चाआपको टिप्पणियों को स्वयं भी लिंक करना होगा: हाँ, हाँ, यह आपके लिए जूमला नहीं है, इसकी आदत डालें। हालाँकि, टाइटैनिक प्रयासों की आवश्यकता नहीं है; कनेक्शन प्रक्रिया रीकैप्चारेल एप्लिकेशन में रिकैप्चा को कनेक्ट करना लेख में विस्तार से वर्णित किया गया है। इसके बाद, समायोजन करना अतिश्योक्तिपूर्ण नहीं होगा चिंतन करनाइस तरह से कि ब्लॉग एकल-उपयोगकर्ता मोड में काम करता है (कम से कम पहले!), अपने कई पाठकों को केवल पढ़ने के लिए मोड की अनुमति देता है, दूसरे शब्दों में, हम शुरुआत में नए उपयोगकर्ताओं के पंजीकरण पर रोक लगा देंगे। ऐसा करने के तरीके के बारे में इंटरनेट पर कई तरह के नुस्खे हैं, लेकिन, मेरी राय में, इस तरह की सबसे सक्षम हैक विकी डिवाइस में है, कैसे करें नामक सामग्री में: एकल उपयोगकर्ता प्रणाली के रूप में डिवाइस सेट करें . अर्थात्: हम एक नया नियंत्रक बनाते हैं:

ऐप/नियंत्रक/पंजीकरण_नियंत्रक.आरबी:

कक्षा पंजीकरण नियंत्रक< Devise::RegistrationsController before_action:one_admin_registered?, only: [:new, :create] protected def one_admin_registered? if ((Admin.count == 1) & (admin_signed_in?)) redirect_to root_path elsif Admin.count == 1 redirect_to new_admin_session_path end end end

फिर हम इसे Routes.rb में ओवरराइड करते हैं, और बस इतना ही:

#devise_for:admins devise_for:admins, नियंत्रक: (पंजीकरण: "पंजीकरण")

CKEDITOR.editorConfig = function(config) ( // config.enterMode = 2; // अक्षम

पूरी तरह से config.enterMode = CKEDITOR.ENTER_BR // ENTER कुंजी इनपुट दबाकर
config.shiftEnterMode = CKEDITOR.ENTER_P; // SHIFT + ENTER कुंजी इनपुट दबाने पर

कॉन्फिग.ऑटोपैराग्राफ = गलत; // स्वचालित प्रविष्टि बंद कर देता है

पर ध्यान केंद्रित);

शायद, शुरुआत करने वालों के लिए, यह वास्तव में सब कुछ है... अरे, मैं सबसे महत्वपूर्ण बात लगभग भूल ही गया। यदि आप अपना नया ब्लॉग तैनात करने जा रहे हैं हेरोकू- इन तीन पंक्तियों को इसमें जोड़ें

config/application.rb

कॉन्फिग.एसेट्स.प्रीकंपाइल += सीकेडिटर.एसेट्स कॉन्फिग.एसेट्स.प्रीकंपाइल += %w(ckeditor/*) config.autoload_paths += %W(#(config.root)/app/models/ckeditor)

अन्यथा सीके संपादकआपकी नई जगह पर आपके लिए काम करने से इंकार कर देंगे।

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

सच है, संसाधन पूरी तरह से अंग्रेजी में है। और यह समझना महत्वपूर्ण है कि इसे एक पुस्तक के रूप में बनाया गया है - आपको सभी मुद्दों को स्वयं ही समझना होगा। इस वजह से, प्रशिक्षण की अवधि और जटिलता का अनुमान नहीं लगाया जा सकता है।

2. रेलकास्ट

पूरे इंटरनेट पर एक और प्रसिद्ध शैक्षिक संसाधन। रेल डेवलपर्स की एक से अधिक पीढ़ी इस पर पली-बढ़ी है। अंग्रेजी में भी.

इसे संपूर्ण प्रशिक्षण पाठ्यक्रम के रूप में नहीं, बल्कि स्क्रीनकास्ट की एक श्रृंखला के रूप में बनाया गया है - एक विशिष्ट विषय पर लघु पाठ। बहुत सारे पाठ हैं, आप उन्हें लगभग किसी भी विषय पर पा सकते हैं।

दुर्भाग्य से, प्रोजेक्ट ने 2013 में अपडेट करना बंद कर दिया।

3. लाश के लिए रेल

ज़ोंबी माहौल के साथ खोज गेम शैली में शुरुआती लोगों के लिए ऑन-रेल का एक मजेदार परिचय। पूर्ण रूप से शुरुआती लोगों के बीच बहुत लोकप्रिय है।

यह सुविधाजनक है क्योंकि आपको अपने कंप्यूटर पर कुछ भी इंस्टॉल करने की आवश्यकता नहीं है। ब्राउज़र में सभी समस्याएं हल हो जाती हैं. कदम दर कदम आप खेल से गुजरते हैं और रूबी ऑन रेल्स की मूल बातें समझना शुरू करते हैं।

यदि आप प्रोग्रामिंग को बिल्कुल नहीं समझते हैं, तो यह आपकी पसंद है। पाठ्यक्रम में कोई जटिल विषय नहीं हैं, कुछ भी बुनियादी बातों से ध्यान नहीं भटकाता। अंग्रेजी में।

3.उडेमी

वीडियो पाठ्यक्रमों का बड़ा संग्रह. उनमें से रेल पर रूबी और रूबी के लिए कई हैं। विशिष्ट लिंक प्रदान करने का कोई मतलब नहीं है - कीमत या लोकप्रियता के आधार पर अपने स्वाद के अनुसार चुनें।

उडेमी प्रारूप में वीडियो पाठों पर जोर देने के साथ काफी छोटे पाठ्यक्रम शामिल हैं। गंभीर होमवर्क या शिक्षकों से त्वरित समर्थन की अपेक्षा न करें।

4. रूबी बर्सा

रेल विकास की बुनियादी बातों पर एक शक्तिशाली लघु पाठ्यक्रम। अनुभवी शिक्षक, अच्छा कार्यक्रम।

पाठ्यक्रम में छात्र की व्यक्तिगत उपस्थिति वांछनीय है और यह केवल बड़े यूक्रेनी शहरों में होती है।

5. ईविल मार्टियंस से रूबी ऑन रेल्स में विकास

रूस में सबसे अनुभवी रूबी ऑन रेल्स टीमों में से एक से तीन दिवसीय गहन पाठ्यक्रम।

शायद ही कभी किया गया हो. यह महंगा है (समीक्षाओं को देखते हुए, यह इसके लायक है)। व्यक्तिगत उपस्थिति की आवश्यकता है. केवल उन्नत प्रोग्रामर के लिए उपयुक्त; शुरुआती लोगों के पास वहां करने के लिए कुछ नहीं है।

6. "ए गुड प्रोग्रामर" से रूबी ऑन रेल्स ऑनलाइन गहन पाठ्यक्रम

शुरुआती लोगों के लिए रूबी पाठ्यक्रमों के लिए यूट्यूब पर जानी जाने वाली टीम का एक नया प्रोजेक्ट।

3 महीने का गहन कार्यक्रम पूरी तरह से शुरुआती लोगों के लिए डिज़ाइन किया गया है और यह आपको कम से कम 12 स्मार्ट अनुप्रयोगों के पोर्टफोलियो के साथ एक जूनियर प्रोग्रामर में बदलने का वादा करता है।

पाठ्यक्रम में वीडियो पाठ, व्यावहारिक असाइनमेंट, शिक्षक सहायता और नियमित वेबिनार शामिल हैं।

द्वारा पहचानने यूट्यूब चैनलऔर उपयोगकर्ता टिप्पणियाँ - ये लोग जानते हैं कि वे क्या कर रहे हैं और आप उनसे बोर नहीं होंगे।

विषय पर प्रकाशन