تطبيق تدفق روبي أون ريلز

عندما تكتب برامجك الخاصة من البداية إلى النهاية ، من السهل رؤيتها التحكم في التدفق. يبدأ البرنامج هنا ، هناك حلقة هناك ، مكالمات الطريقة هنا ، كل شيء مرئي. ولكن في تطبيق Rails ، ليست الأمور بهذه البساطة. مع إطار من أي نوع ، تتخلى عن التحكم في أشياء مثل "التدفق" لصالح طريقة أسرع أو أبسط للقيام بمهام معقدة. في حالة Ruby on Rails ، يتم التعامل مع عنصر التحكم في التدفق خلف الكواليس ، وكل ما تبقى لديك هو (أكثر أو أقل) مجموعة من النماذج والمشاهد ووحدات التحكم.

في صميم أي تطبيق ويب هو HTTP. HTTP هو بروتوكول الشبكة الذي يستخدمه متصفح الويب لديك للتحدث مع خادم الويب. هذا هو المكان الذي تأتي منه مصطلحات مثل "طلب" و "GET" و "POST" ، فهي المفردات الأساسية لهذا البروتوكول. ومع ذلك ، نظرًا لأن ريلز هو تجريد لهذا ، فلن نقضي الكثير من الوقت في الحديث عنه.

عندما تفتح صفحة ويب ، تنقر على رابط أو ترسل نموذجًا في متصفح الويب ، سيتصل المتصفح بخادم الويب عبر TCP / IP. ثم يرسل المتصفح إلى الخادم "طلب" ، فكر في الأمر على أنه نموذج بريد إلكتروني يملأه المتصفح يطلب معلومات في صفحة معينة. يرسل الخادم في النهاية متصفح الويب "استجابة". روبي أون ريلز ليس خادم الويب بالرغم من ذلك ، يمكن أن يكون خادم الويب أي شيء من Webrick (ما يحدث عادة عند بدء تشغيل خادم Rails من ال

instagram viewer
سطر الأوامر) إلى Apache HTTPD (خادم الويب الذي يشغل معظم الويب). خادم الويب هو مجرد ميسر ، فهو يأخذ الطلب ويسلمه إلى تطبيق ريلز الخاص بك ، الذي يولد الاستجابة ويمر يعود إلى الخادم ، والذي بدوره يرسلها مرة أخرى إلى زبون. لذا فإن التدفق حتى الآن هو:

أول شيء يفعله تطبيق Rails مع الطلب هو إرساله عبر جهاز التوجيه. لكل طلب عنوان URL ، وهذا ما يظهر في شريط العنوان في متصفح الويب. جهاز التوجيه هو ما يحدد ما يجب فعله مع عنوان URL هذا ، إذا كان عنوان URL منطقيًا وإذا كان عنوان URL يحتوي على أي معلمات. تم تكوين جهاز التوجيه في التكوين / توجيهات. rb.

أولاً ، اعلم أن الهدف النهائي لجهاز التوجيه هو مطابقة عنوان URL مع وحدة تحكم وعمل (المزيد عن هذه لاحقًا). ونظرًا لأن معظم تطبيقات Rails RESTful ، ويتم تمثيل الأشياء في تطبيقات RESTful باستخدام الموارد ، سترى خطوطًا مثل الموارد: الوظائف في تطبيقات ريلز النموذجية. يطابق هذا عناوين URL مثل /posts/7/edit مع وحدة تحكم المشاركات ، تعديل إجراء على البريد بمعرف 7. جهاز التوجيه يقرر فقط أين تذهب الطلبات. لذا يمكن توسيع كتلة [Rails] الخاصة بنا قليلاً.

الآن بعد أن حدد جهاز التوجيه جهاز التحكم الذي سيتم إرسال الطلب إليه ، وأي إجراء على جهاز التحكم هذا ، يرسله عليه. وحدة التحكم هي مجموعة من الإجراءات ذات الصلة التي تم تجميعها معًا في الفصل. على سبيل المثال ، في المدونة ، يتم تجميع كل الشفرة لعرض منشورات المدونة وإنشائها وتحديثها وحذفها معًا في وحدة تحكم تسمى "Post". الأفعال طبيعية فقط طرق من هذه الفئة. تقع وحدات التحكم في التطبيق / وحدات التحكم.

لنفترض أن متصفح الويب أرسل طلبًا /posts/42. يقرر جهاز التوجيه هذا يشير إلى بريد تحكم تبين الطريقة ومعرف المنشور المراد إظهاره 42، لذلك يسميها تبين مع هذه المعلمة. ال تبين الطريقة ليست مسؤولة عن استخدام النموذج لاسترداد البيانات واستخدام طريقة العرض لإنشاء الإخراج. لذا فإن كتلة [Rails] الموسعة لدينا الآن:

النموذج هو الأبسط في الفهم والأصعب في التنفيذ. النموذج مسؤول عن التفاعل مع قاعدة البيانات. إن أبسط طريقة لشرح ذلك هو النموذج هو مجموعة بسيطة من استدعاءات الأسلوب التي ترجع كائنات Ruby العادية التي تتعامل مع جميع التفاعلات (القراءة والكتابة) من قاعدة البيانات. لذلك ، بعد مثال المدونة ، فإن واجهة برمجة التطبيقات التي ستستخدمها وحدة التحكم لاسترداد البيانات باستخدام النموذج ستبدو كما يلي Post.find (المعلمات [: id]). ال المعلمات هو ما قام الموجه بتحليله من عنوان URL ، Post هو النموذج. هذا يجعل استعلامات SQL ، أو يفعل كل ما هو مطلوب لاسترداد منشور المدونة. تقع النماذج في التطبيق / النماذج.

من المهم ملاحظة أنه ليست كل الإجراءات بحاجة إلى استخدام نموذج. التفاعل مع النموذج مطلوب فقط عندما يلزم تحميل البيانات من قاعدة البيانات أو حفظها في قاعدة البيانات. على هذا النحو ، سنضع علامة استفهام بعدها في مخططنا الصغير الانسيابي.

أخيرًا ، حان الوقت لبدء إنشاء بعض HTML. لا يتم التعامل مع HTML بواسطة وحدة التحكم نفسها ، ولا يتم التعامل معها بواسطة النموذج. الهدف من استخدام إطار MVC هو تجزئة كل شيء. تظل عمليات قاعدة البيانات في الوضع ، ويظل إنشاء HTML في العرض ، وتستدعي وحدة التحكم (التي يستدعيها جهاز التوجيه) كلاهما.

يتم إنشاء HTML عادةً باستخدام Ruby المضمنة. إذا كنت على دراية بـ PHP ، أي أن ملف HTML يحتوي على كود PHP مضمن فيه ، فإن Ruby المضمن سيكون مألوفًا للغاية. تقع هذه الآراء في التطبيق / المشاهدات، وستتصل وحدة التحكم بأحدهما لإنشاء الإخراج وإرساله مرة أخرى إلى خادم الويب. بشكل عام ، يتم تخزين أي بيانات يتم استردادها بواسطة وحدة التحكم باستخدام النموذج في ملف المتغيرات الخاصة والتي ، بفضل بعض روبي ماجيك ، ستكون متاحة كمتغيرات الحالة من داخل العرض. أيضًا ، لا يحتاج Ruby المضمن إلى إنشاء HTML ، يمكنه إنشاء أي نوع من النص. سترى هذا عند إنشاء XML لـ RSS ، JSON ، إلخ.

يتم إرسال هذا الإخراج مرة أخرى إلى خادم الويب ، الذي يرسله مرة أخرى إلى متصفح الويب ، الذي يكمل العملية.