Ruby On Rails .. نقطة البداية

كانت لدي النية منذ فترة لتجربة Ruby On Rails في احد المشاريع الصغيرة التي سأعمل عليها ، وتسنت لي الفرصة اخيراً بمشروع صغير نسبياً لادارة المقالات ، والحق يقال أنني اجد نفسي امام تقنية سيكون لها شأن كبير في تطوير المواقع لاعتمادها على مبديء اساسي وهو تطوير المواقع بشكل سريع!

الفريمورك يعتمد على لغة برمجة يابانية هي Ruby نشأت في منتصف التسعينات ، تعتبر اللغة مفتوحة المصدر و يميزها اعتمادها على مبدأ السهولة في التعامل وقربها لطبيعة التحدث باللغة الانجليزية بشكل كبير ، وكذلك تطبيقها لمبدأ OOP بشكل أبعد مما تفعله اللغات الأخرى ، فهي تنظر لجميع الاشياء على أنها Objects ، حتى الأرقام والمتغيرات ، على سبيل المثال يمكن في Ruby عمل التكرار بطرق كثير منها استخدام الرسالة times قبل أي رقم (3.times) ثم نكتب أقواس التكرار { } ونكتب ما نريد بينهما! ..

هنا تم استخدام العدد (3) كـ Object ، وتم ارسال الـ (times) على شكل Method لعمل التكرار لخمس مرات! .. وهذا ما لا تراه في أغلب لغات البرمجة حالياً ، لذلك .. يمكن القول أن فهم الـ RoR يعتمد على فهم لغة Ruby بشكل كبير ، ولكن ليس هذا محور حديثنا حالياً .. على أي حال يمكنك تجربتها عن طريق هذا الرابط ..

.. من أين جاءت فكرة الفريمورك RoR ، وهل فعلاً يمكن بناء مواقع ناجحة به ليس فيها مشاكل ، وهل فعلاً ما يقال أن الـ RoR يمكنها بناء المواقع أسهل وأسرع من غيرها من اللغات والتقنيات الأخرى .. أعتقد أن الاجابة على ذلك يحتاج إلى أكثر من موضوع ، وهذا ما سيتم بإذن الله تعالى ..

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

في الغالب تأخذ عملية تعلم لغة برمجة أو تقنية جديدة بعض الوقت ، ولا اعتقد أن RoR تشذ عن ذلك ، فلأول وهلة قد يبدو الفريمورك صعباً ومعقداً ، خاصة لمن لم يقم بأي برمجة من أي نوع من قبل ، لكن مع الوقت قد يبدو أسهل نسبياً ، والأهم أنه سيكون اسرع من اللغات الاخرى في تنفيذ مشاريع الويب ، ويكفي أن تعلم أنه يمكن أن تقوم بمشروع كامل دون أن تكتب جملة استعلام SQL واحدة! أو ربما -إن احببت- بسطر واحد تنشي ملفات اضافة البيانات والتعديل عليها وحذفها من قاعدة البيانات! دعنا من هذا وذاك ولنبدأ في معرفة بعض الاساسيات عن RoR!

RoR تعتمد على 3 مباديء اساسية وهي

  1. تقليل الحاجة لتعديل الاعدادات الاساسية
  2. عدم التكرار
  3. استخدام طريقة (Agile development) في عملية التطوير

أما بالنسبة للنقطة الأولى فتعنى أن مطور المواقع لا يحتاج لعمل الكثير من الاعدادات لبدء العمل في أي مشروع ، فالفريمروك بني على اساس وضع الكثير من هذه الاعدادات افتراضية بحيث لا يحتاج المطور للتعامل معها في كل مشروع ، نعم .. قد يمكن التعامل معها بالتعديل ولكن يمكن الاستغناء عن هذه الاعدادات والبدء مباشرة في العمل!

على سبيل المثال يوجد ملف للتعامل مع قواعد البيانات الخاصة بأي مشروع ، يتم انشاءه عند انشاء أي مشروع جديد ، ويحتوي هذا الملف على معلومات الاتصال بقواعد البيانات الخاصة بهذا المشروع (لكل مشروع 3 قواعد بيانات) ، كل ما عليك فعله هو انشاء قواعد البيانات بهذه الاسماء فقط! ، أما البيانات الأخرى مثل الحقول وغيرها يمكن التعامل معها لاحقاً عن طريق ما يسمى بـ DB Migration .

أما عدم التكرار فهو اسلوب برمجي يعتمد عليه RoR بحيث يمكن التعديل في مكان واحد فقط عند الحاجة لتعديل اي شي في المشروع ، وهذا الاسلوب مدعوم بشكل كبير في RoRبسبب طريقة بناءها بحيث تجبر المبرمج على استخدام هذا الاسلوب بشكل أو بآخر.

أما الـ (Agile development) فهي طريقة تعتمد على البساطة في تحليل المتطلبات ، والسرعة في بدء العمل ، ببساطة يمكن البدء في المشاريع دون الحاجة لخطط متقنة للعمل ، دون الحاجة لتصور كامل عن المشروع ، كما يمكن أن يتم العمل على الستايل مثلاً قبل معرفة نوعية البيانات التي يمكن أن يحتويها المشروع ، كذلك عملية التعديل في أي جزء سواء كان في قواعد البيانات أو الستايل أو غيرها دون التأثير على بقية المشروع.

قبل كل شي يجب أن يتم فهم الطريقة التي تعتمد عليها RoR في بناءها ، ولكي لا نستغرق في الموضوع كثيراً نشير إلى أن اللغة تستخدم مبدأ الـ MVC ، وهو اسلوب لتقسيم بناء الملفات إلى ثلاثة أقسام رئيسية هي الـ Model-View-Controller ، يتم فيها فصل معلومات التطبيقات (Application’s Data) عن الواجهة (interface) وكذلك عن العمليات الداخلية المنطقية (Logical) ، ولتقريب الصورة بشكل أكبر يتم عند طلب أي صفحة عن طريق المتصفح استقبال الطلب عن طريق المتحكم (Controller) الذي يقوم بجمع المعلومات اللازمة عن طريق الموديل (Model) المرتبط به ، وبعد ذلك يتم تحويل المخرجات والنتائج إلى الملف الخاص بالعرض (View) عن طريق اسلوب خاص بالتوجيه ، الموضوع سهل جداً .. !

الطريقة لها فوائد كثير من أهمها سهولة تقسيم العمل بين العاملين في المشروع بالتخصصات ، كذلك سهولة إيجاد الاخطاء ، كذلك امكانية استخدام أكثر من طريقة عرض لموديل واحد ، مثلاً يمكن استخدام العرض الخاص بالاجهزة العادية + العرض الخاص باجهزة الهاتف المحمول ، كذلك يمكن الاستفادة من هذه الطريقة في انشاء صلاحيات جديدة لاعضاء جدد عن طريق انشاء متحكمات (Controller) وطريق عرض (Views) جديدة من نفس الموديل (Model).

طبعاً لا اتوقع أن بعض الكلمات ستفي بالغرض في فهم طريقة MVC في الـ RoR بشكل كامل ، لكن لن نسهب في شرح عملية استقبال الطلبات وتوجيهها - في الوقت الحالي - ، كل ما يهمنا معرفته بالاضافة إلى ما سبق أن هناك اسلوب معين لتسمية الملفات ، فيجب أن تكون اسماء الملفات بشكل معين حتى يتم تنفيذها بلا مشاكل ، ويراعى في ذلك الارتباطات بين الاجزاء الثلاثة Model-View-Controller ، وكذلك الجداول في قاعدة البانات وغيرها.

لنضرب على ذلك مثلاً بسيطاً ، لنفترض أن نريد تطبيق لادارة المواضيع ، فيمكن تسمية الموديل (Model) بـ (story) بالكلمة المفردة ، أما الجدول المرتبط به في قاعدة البيانات فسيكون بالجمع (stories) ، بهذا سيتم الربط بين الموديل والجدول في قاعدة البيانات وتتم الاستعلامات بشكل صحيح ، أما بالنسبة للمتحكم (Controller) فسيتم تسميته بالشكل التالي (topic_controller) وسيحتوى على كلاسات للتوجيه إلى ملفات العرض (View) سنتطرق لها لاحقاً.

ملاحظة: استعرض الروابط للكلمات المكررة (مثل RoR) ، فهي تحتوي على روابط مختلفة ومفيدة في كل مرة!

نراكم على خير في تفاصيل أكثر وبعض التجارب!

4 تعليقات على “Ruby On Rails .. نقطة البداية”

  1. abomuhammed:

    Hey!
    Welcome to the club…!

    http://www.arug.org/

    not yet alive but wil be inshaa allah

    I really think we need to start a wiki for this… what do you think!

  2. بدر:

    حياك ابا محمد ..

    جميل جداً هذا المشروع .. لكنه يحتاج إلى الكثير للوصول ، من اهم ما يحتاجه حالياً بناء الموقع ليتم اضافة المحتويات عليه ..

    معك في أن الويكي كبداية مهمه .. كذلك ربما وضع مدونه لجمع التدوينات عن RoR من كافة المواقع يعتبر فكرة أخرى ..

    انا على اتم الاستعداد للاشتراك في المشروع ..

  3. some one:

    هلا اخوي بدر

    بصراحة موضوع رائع وجميل ومشوق وننتظر جديدك في هذا الموضوع

    الي شديت انتباهي على هذه اللغة الرائعة والمشوقة

    وننتظر شروحات قادمة منك اخوي بدر تكون فيها شموله على الموضوع اكبر وسلمت

    على مجهودك وبالتوفيق

  4. بدر:

    حياك اخي الكريم ..

    اشكرك على تعليقك ..

    بإذن الله سترى بعض المواضيع في الايام القادمة ..

    ارجوا ان يكون فيها الاضافة لك .. ولغيرك ..

أكتب تعليقاً