من البداية
بعد غياب طويل نظرا لإنشغالاتي الكثيرة, أعود إليكم لمواصلة دروسنا الرايلزية. في هذا الدرس سوف نبدأ بمشروع جديد أحاول من خلاله شرح أهم ما يمكن معرفته لإنجاح أول مشروع ب ROR. رغم أن الهدف من روبي رايلز هو تصميم مواقع و تطبيقات ويب ديناميكية فإن رايلز بارع في إنشاء صفحات ويب ساكنة. إستعمال ROR لتصميم مواقع ويب ساكنة له فوائد كثيرة بحيث أنه يمكننا إضافة و لو قليلا بعض الكود ديناميكي. في البداية و كما أوضحناه في درس سابق نقوم بإنشاء أول مشروع رايلز نسميه testproject كالتالي :
1
| |

يمكن التنويه أنه في الإصدارات السابقة لرايلز كان لابد القيام بالأمر bundle install بعد إنشاء المشروع و لكن مع rails 3.2 أصبحت هذه الخطوة آلية عند المشروع, نُذكر أن الهدف من هذه الخطوة هو تثبيث الجيمات التي يحتاجها المشروع.
الصفحات الساكنة
رايلز يقترح طريقتين لإنشاء صفحات ويب ساكنة, الأولى بإستعمال صفحات ويب تحتوي على مجرد الكود HTML, و الثانية, رايلز يتيح لنا تطوير واجهات (views) تحتوي على الHTML و التي يقوم رايلز بتحويلها إلى خادم الشبكة (web server).
الصفحات الساكنة الفعلية
لاحظتم أنه عند تشغيل مشروع رايلز للمرة الأولى ظهور صفحة بداية إفتراضية عند الذهاب إلى الرابط : http://localhost:3000

لمعرفة مصدر الصفحة يجب النظر إلى الملف public/index.html و الذي قام رايلز بإنشاءه بشكل إفتراضي, المهم أن رايلز يُرسل أي ملف في الpublic مباشرة على المتصفح, في حالة الملف الخاص index.html فإننا لن نحتاج لكتابة الإسم على الرابط لأن الإسم index.html يُعتبر ملف إفتراضي لصفحة البداية. إذن إذا فهمتم هذه الفقرة فإنه بإمكانكم الآن إنشاء صفحاتكم الخاصة ووضعها في الملف public, على سبيل المثال يمكننا إنشاء صفحة تحتوي على كلمة ترحيب.
1
| |


الصفحات الساكنة الرايلزية
القدرة على التعامل مع صفحات الHTML الساكنة ضروري ولكنه غير كافي بالدرجة الأولى خاصة من أجل إنشاء تطبيقات ديناميكية. في هذه الفقرة سوف نقوم بخطوة مهمة تسمح لنا بإنشاء صفحات ديناميكية و ذلك بإنشاء مانسميه مجموعة من “الأفعال” أو actions بحيث نستطيع من خلالهم تعريف الروابط بطريقة أقوى من الصفحات الساكنة. رايلز يتوفر على محرك يسمح بإنشاء وحدات التحكم “controller” إسمه “generate”, كل ما يلزمه لذلك هو إسم وحدة التحكم. في مثالنا سوف نقوم بإنشاء وحدة التحكم من أجل صفحاتنا الساكنة و التي سنسميها safahates. والتي سوف تحتوي على “الأفعال” التي سوف تمثل صفحاتنا الساكنة مثل صفحة “البداية”,”الإتصال” أو صفحة “من نحن”, و منه فإن السكريبت generate سوف يأخذ لائحة من الأفعال لإنشاء صفحاتنا.
1
| |
مع إنشاء الفعلين home و contact فإن التوجيه نحو هاذين الفعلين قد تمت إضافته بطريقة آلية داخل الملف config/routes.rb.

لو أليقنا نظرة على الملف config/routes.rb سنلاحظ مثلا وجود العلاقة “get safahates/home”, هذه العلاقة تتكفل بالأمر الموافق للرابط safahates/home لصفحة البداية, أكثر من ذلك, فإنه بإستعمالنا لget فإن تطبيقنا يجيب على الأمر get و الذي هو عبارة عن واحد من الأفعال الأساسية للHTTP المستعملة من طرف HyperText Transfer Protocol. يمكنكم الآن مشاهدة النتيجة بإرسال اﻷمر rails server و تشغيل الرابط safahates/home. الآن لمعرفة منبع هذه الصفحات, يجب الذهاب إلى وحدة التحكم التي قمنا بإنشائها, سوف تلاحظون أن الملف safahates_controller يُعرف فئة تُسمى SahafatesController. الفئات هم عبارة عن طريقة سهلة و مرنة لترتيب الأفعال “الطرق” مثل الأفعال home أو contact و التي تم تعريفها عن طريق الكلمة المفتاحية def, العلامة “>” تُشير إلى أن SahafatesController ترث من ApplicationController التي تعبر عن فئة رايلزية هذا يعني أن الفئة SahafatesController تحوي على الكثير من الميزات من رايلز. في روبي, هذه الأفعال لا تعني أي شيء بصفتها خالية, و لكن في رايلز الوضعية مختلفة : SahafatesController عبارة عن فئة روبية و لكن لكونها ترث من ApplicationController فإن سلوك هذه الأفعال ستكون خاصة برايلز, و لهذا عند تصفحنا الرابط safahates/home, يقوم رايلز بمراجعة وحدة التحكم safahates ثم بإرسال الأمر المقابل للفعل home ثم يرسل في الآخر الواجهة الموافقة. في المثال بماأن الفعل home خالي من أي أمر فإن كل الأوامر التي يتم إرسالها إلى safahates/home ترسل بدورها مجرد واجهات لا غير, و لكن أين هذه الواجهات ؟ الجواب موجود في الصورة السابقة التي تظهر نتيجة الأمر “rails generate Safahates contact home” و التي تظهر بكل وضوح الرابط بين الواجهة ووحدة التحكم, فالفعل home يُقابله واجهة إسمها “home.html.erb” لاتحتوي على الكثير من الكود لإنها أُنشأت بطريقة إفتراضية.


متغيرات الحالة و الروبي المتضمنن
الملفات من نوع “erb.” يمكن أن تحتوي على الكود روبي, و الذي يمكننا إستعماله لجعل الصفحات أكثر ديناميكية. دعونا نجرب بعض الأمور السهلة بروبي داخل الصفحة home مثل إضافة “1+1” و نلاحظ النتيجة في المتصفح. لإدماج الكود روبي داخل الhtml هناك طريقتين :
عن طريق العلامات <% %> لتنفيذ الكود روبي الموجود بين هاتين العلامتين ؛
عن طريق <% =%> لتنفيذ الكود روبي و إظهار النتيجة مباشرة على المتصفح, بحيث أن الفرق مع الطريقة الأولى يكمن في إظهار النتيجة.

أخر شيئ نتطرق له في هذا المقال هو مبدأ البرمجة من غير التكرار عن طريق الLayout. الملف application.html.erb الموجود فيapp/views/layout يعتبر من الملفات المهمة والتي تساعد بشكل كبير في تسريع البرمجة. الملف يحتوي على سطر في الظاهر بسيط ولكنه مفيد بدرجة كبيرة إنه : <% yield %> و الذي يسمح بإدخال أي واجهة, لهذا فإن الملف application.html.erb يستعمل بشكل كبير برسم الواجهة الأساسية لكل مشروع داخل رايلز, بحيث لو أن الصفحات داخل التطبيق تتقاسم بعض المحتوى فإن يمكن كتابتها مرة واحدة في هذا الLayout.

و من ثم تحميل المشروع عن طريق إرساله إلى المستودع البعيد كالتالي :








