من البداية

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

1
rails new testproject $

يمكن التنويه أنه في الإصدارات السابقة لرايلز كان لابد القيام بالأمر bundle install بعد إنشاء المشروع و لكن مع rails 3.2 أصبحت هذه الخطوة آلية عند المشروع, نُذكر أن الهدف من هذه الخطوة هو تثبيث الجيمات التي يحتاجها المشروع.

الصفحات الساكنة

رايلز يقترح طريقتين لإنشاء صفحات ويب ساكنة, الأولى بإستعمال صفحات ويب تحتوي على مجرد الكود HTML, و الثانية, رايلز يتيح لنا تطوير واجهات (views) تحتوي على الHTML و التي يقوم رايلز بتحويلها إلى خادم الشبكة (web server).

الصفحات الساكنة الفعلية

لاحظتم أنه عند تشغيل مشروع رايلز للمرة الأولى ظهور صفحة بداية إفتراضية عند الذهاب إلى الرابط : http://localhost:3000

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

1
gedit public/marhaba.html $

الصفحات الساكنة الرايلزية

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

1
rails generate controller Safahates contact home $

مع إنشاء الفعلين 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.


إدارة الإصدارات-github

الآن و قد قمنا بوضع مشروعنا تحت منصة إدارة الإصدارات, حان الوقت ل”تحميل” البرنامج نحو https://github.com و الذي هو عبارة عن موقع إجتماعي مهيأ و مطور من أجل إستقبال و تقاسم المستودعات من نوع الGIT. وضع نسخة من مستودعكم في الgithub له هدفان :

  1. حفظ كامل لكل المشروع (بالإضافة إلى جميع المستودعات التي تم إنشاءها)
  2. تسهيل التبادل و التقاسم مع مطورين أخرين لنفس المشروع أو لنسخ مشاريع نريد إنشاء مثلها و العمل عليها, هذه النقطة تعتبر ثانوية و لكن كونكم عضو في الgithub يمنحكم لكم صلاحية للإطلاع على العديد من المشاريع المطورة بلغتكم المفضلة و من بينها Ruby, مع العلم أن موقع الgithub طُور عن طريق منصة Ruby On Rails.

يحتوي الgithub على العديد من الصيغ الغير مجانية ولكن من أجل البرامج المفتوحة المصادر فإنه يقترح خدمات مجانية, و لهذا فإن ما يجب فعله أولا هو التسجيل على الموقع من أجل الحصول على حساب مجاني, ثم الضغط على الرابط (new repository) من أجل تسجيل و إنشاء مستودع جديد, بعدها لم يتبقى إلا إتمام معلومات الإستمارة كما هو موضح في الصورة

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

1
2
git remote add origin git@github.com:<username>/project_name.git $
git push origin master $

بحيث أن : username تمثل إسم المستحدم و project_name إسم المشروع.

الفروع أو الفرع Branch

الGIT عبارة عن أداة رائعة من أجل إنشاء “الفروع” و التي هي عبارة عن نسخ للمستودعات التي نقوم بالعمل عليها دون تغيير الملف الرئيسي. في جميع الحالات, المستودع الرئيسي هو الفرع “master” و يمكننا أن نقوم من خلاله بإنشاء فرع جديد عن طريق الأمر checkout و العَلم b- :

1
2
git checkout -b modify-README $
git branch $

في هذه الحالة, الأمر الثاني يقوم بعرض كل الفروع المحلية, و النجمة تحدد الفرع الذي نحن بصدد العمل عليه, لاحظتم أن git checkout -b تقوم من جهة بإنشاء فرع جديد و من جهة بتغيير الفرع الذي تم إنشاءه. فائدة الفروع لا تتجلى إلا عند العمل جماعة على نفس المشروع.

التغيير Edit

بعد إنشاء الفرع نقوم بتعديله, تعتبر الmarkdown لغة جيدة من أجل القيام بالتغييرات على الملفات في الgithub. على سبيل المثال سوف نقوم بتغيير الملف README, من أجل هذا نقوم بتحويله إلى ملف markdown عن طريق اﻷمر :

1
2
git mv README README.markdown $
gedit   README.markdown $

و منها نقوم بالتغيير في الملف ثم تطبيق التغييرات كما هو موضح في الصورة.

الإدماج Merge

الأن و بعد إتمام التغييرات, نقوم بدمج النتيجة إلى الفرع الرئيسي عن طريق اﻷمر :

1
2
git checkout master $
git merge modify-README $

التحميل Push

لم يتبقى الأن إلى تحميل التغيرات على الgithub من أجل رؤية النتائج كما توضح الصورة :


إدارة الإصدارات-تثبيث و إعداد

لتثبيث الGIT أنصحكم بتتبع الخطوات المشروحة بطريقة جيدة و مفصلة حسب نوع النظام على الرابط http://git-scm.com/book/en/Getting-Started-Installing-Git , على سبيل المثال تثبيث الGIT على نظام الأبونتو يتم بالأمر التالي :

1
sudo apt-get install git-core $

بعد تثبيث الGIT, تأتي المرحلة التالية و التي نقوم فيها بتهيئة الإعدادات و هي عبارة عن إعدادات خاصة بالنظام أي أنكم لن تنفذوها إلا مرة واحدة على نفس النظام :

1
2
git-config --global user.name "الإسم" $
git-config --global user.email "البريد الإلكتروني" $

تهيئة الإعدادات لل repository (المستودع)

تشمل هذه المرحلة مجموعة من العمليات الضرورية لتشكيل الrepository, و الذي هو عبارة عن “ملف أو نظام تحكم” تُوضع فيه الإصدارات الخاصة بالتطبيق :

1
git init $

بعدها يجب إضافة الملفات داخل الrepository, ولكن يكمن هنا مشكل بسيط و هو أن الGIT يتبع التغيرات التي تطرأ على كل الملفات حتى تلك التي لا نريد تتبعها, أخص بالذكر ملفات الlog على سبيل المثال وذلك أن هذه الملفات تتغير بكثرة و لسنا بحاجة لأن يقوم نظام إدارة الإصدارات بتتبع تغيراتها. لحسن الحظ فإن الGIT لديه القدرة على تجاهل مثل هذه الملفات و ذلك بالطريقة التالية : نضف إلى الملف الرئيسي للتطبيق ملف إسمه gitignore. و الذي سوف يحتوي على بعض القواعد تحدد لGIT الملفات التي يجب تجاهلها, اﻵن لو عدنا إلى الدرس أول تطبيق برايلز فسوف تلاحظون أن رايلز قام بإنشاء ملف gitignore. داخل الملف الرئيسي مثل ما توضحه الصورة :

اﻵن لو فتحنا gitignore. فسوف تلاحظون أن الملف يحتوي على مجموعة من القواعد تجبر الGIT على تجاهل التغيرات التي تطرأ على ملفات الlog, الملفات المؤقتة و قاعدة البيانات sqllite.

الإضافة و الحفظ

و أخير وصلنا إلى المرحلة التي سوف نقوم من خلالها إضافة ملفات التطبيق إلى الGIT ثم حفظها (commit), يمكنكم إضافة كل الملفات (ماعدا التي تمت تجاهلها) بالطريقة التالية :

1
. git add  $

النقطة (.) هنا تمثل الملف الجاري و الGIT ذكي بما فيه الكفاية لكي يقوم بإضافة كل الملفات بطريقة الإستدعاء الذاتي. هذه العملية تقوم بإضافة الملفات إلى “ساحة التخزين” (staging area) و التي تحتوي على التغيرات المؤقتة على المشروع. يمكنكم رؤيتها عن طريق تنفيذ الأمر “git status” كما هو موضح في الصورة :

اﻵن إذا أردتم حفظ هذه التغيرات و تأكيدها فيجب إستعمال الأمر “commit -m” بحيث أن الخاصية “m-” تسمح لكم بإضافة تعليق يوضح مثلا سبب التغيير.

ماذا يستطيع الGIT القيام به من أجل مساعدتكم

بعد كل ما قمنا به في هذا الدرس أعتقد أن الفائدة من إستعمال الGIT لم تظهر بعد, لهذا دعونا نقوم بعمل تطبيقي يوضح لنا الأمور أكثر. أول شيء سوف نقوم به هو تدمير الملف app/controllers, عملية يمكن أن يقوم بها أي مطور بطريق الخطأ.

1
2
cd first_app/ $
 rm -rf app/controllers $

لمعرفة ما حصل سوف نفوم بإرسال الأمر “git status”.

الصورة توضح التغيرات التي حصلت ولكن ما يجب معرفته أن هذه التغيرات لم تحفظ بعد على الGIT و بالتالي فإن بإمكاننا إلغاءها بطريقة سهلة و ربط الGIT مع الإصدار اﻷخير عن طريق تنفيذ اﻷمر “git chekout -f”.

1
2
3
4
5
6
git checkout -f $
git status $
# On branch master
nothing to commit (working directory clean)
ls app/controllers/ $
application_controller.rb

الحمد لله الملف المحذوف عاد مجددا.


إدارة الإصدارات-مقدمة

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

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

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

عموما, وضع أي تطبيف (كود+ملفات) تحت إدارة الإصدارات GIT عملية ضرورية ليس لكونها مشهورة فحسب في عالم الرايلز و لكن لمنحها إمكانية تقاسم, تبادل و تشغيل الكود بطريقة سهلة جدا.

في الدرس القادم إن شاء الله سنقوم بتثبيث و إعداد ال GIT من أجل حفظ التطبيق.


نمط-عرض-متحكم (MVC)

بالرغم من أننا لم نتقدم كثيرا في درسنا, إلا أنه من المهم جدا أن نلقي نظرة عامة عن النظام الذي تعمل به التطبيقات على رايلز. لعلكم لاحظتم في الدرس السابق أن البنية النموذجية لأي تطبيق رايلز تحتوي على الملف /app و الذي يحتوي بدوره على ثلاث ملفات فرعية و هي : النماذج (models), الواجهات (views) و وحدات التحكم (controllers). هذه التركيبة و إن دلت على شيء فإنها تدل على أن رايلز يتبع النموذج “نمط-عرض-متحكم” (MVC) والذي هو قائم على مبدأ عزل “منطق العمل” عن “واجهات الإستخدام”.

لعلكم اﻷن تتسألون عن معنى المفهومين “منطق العمل” و “واجهات الإستخدام”, أما اﻷول فماهو إلا النموذج الذي يتحكم في البيانات الخاصة بالتطبيق مثل : المستعملين, المقالات أو المنتجات و المفهوم الثاني فإنه يعبر في حقيقة الأمر عن صفحة الويب التي تظهرها المتصفحات.

عمليا, عند التعامل مع أي تطبيق على رايلز, يقوم المتصفح بإرسال طلب يتلقاه الحاجز الألي و الذي يحوله بدوره إلى المتحكم و الذي هو المسؤول عن إدارة العمليات التي تتوالى. في بعض الحالات يقوم المتحكم بإرسال واجهة مباشرة بعد تلقي اﻷمر والتي هي في الواقع تمثل نموذج ترجم إلى ال HTML و حول إلى المتصفح. أما في الحالات الإعتيادية فإن المتحكم يقوم بالتفاعل مع النموذج و الذي هو عبارة عن مكون روبي يمثل عنصرا من الموقع (كالمستعمل على سبيل المثال) و الذي يقوم بالتواصل مع قاعدة البيانات, بعدها يُكون المتحكم واجهة و يُحولها إلى صفحة ويب نهائية قابلة للنشر من طرف أي متصفح متخصص.


أول تطبيق ب Rails

في هذا الدرس سوف نقوم بانشاء أول تطبيق باستعمال رايلز. كل الأوامر التي سوف أنفذها تعمل بشكل طبيعي على نظام لينوكس أبونتو.

أول ما يجب القيام به هو انشاء ملف يحتوي على التطبيق الذي سوف نقوم بتطويره, على سبيل المثال “DemoApp”, بعدها يجب التمركز في هذا الملف و ارسال هذا الأمر rails new first_app, أين first_app تمثل اسم التطبيق.

مقطع من الأوامر من أجل انشاء تطبيق
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mkdir DemoApp $
      cd DemoApp $
      rails new first_app $
      create  
      create  README
      create  .gitignore
      create  Rakefile
      create  config.ru
      create  Gemfile
      create  app
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/models
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
                                  .
                                  .
                                  .

اﻷمر الملاحظ بعد ارسال الأمر هو العدد الكبير من الملفات التي تم انشاءها. هذه البنية النموذجية للملفات تعتبر ميزة من عديد الميزات التي يتمتع بها رايلز, لأنها تسمح بالانتقال من الصفر الى تطبيق يعمل بشكل طبيعي حتى و ان كان التطبيق جد مصغر. زيادة على ذلك وبما أن هذه البنية مشتركة بين جميع التطبيقات التي تعمل برايلز فانه بامكانكم أخذ معالمكم بالاطلاع على تطبيقات أخرى مطورة على الويب و بالخصوص على Github. و فيمايلي ملخص عن كل الملفات التي تم انشاءها :

  • الملف /app : يعتبر قلب التطبيق يحتوي على النماذج (models), الواجهات (views) ووحدات التحكم(controllers).
  • الملف /config : يحتوي على ملفات التكوين الخاصة بالتطبيق.
  • الملف /db: ملفات التعامل مع قاعدة البيانات.
  • الملف /doc: الوثائق الخاصة بالتطبيق.
  • الملف /lib: وحدات المكتبة البرمجية.
  • الملف /log: يحتوي على ملفات تتبع عمليات التطبيق.
  • الملف /public: البيانات العامة التي يمكن الوصول اليها من طرف المتصفحات مثل الصور و أوراق الأنماط.
  • الملف /script/rails : يحتوي على أمر نصي من أجل تسيير البرامج أو فتح جلسة عمل وحدة التحكم.
  • الملف /test: من أجل اختبار التطبيق.
  • الملف /tmp: الملفات المؤقتة.
  • الملف /vendor: البرامج الهامشية مثل ال gem أو ال plugins.
  • الملف README: نبذة عن التطبيق.
  • الملف Rakefile: المهام المساعدة و التي يمكن الوصول اليها عن طريق الأمر Rake.
  • الملف Gemfile: يحتوي على الجيمات المستعملة و الاساسية للتطبيق.
  • الملف config.ru: عبارة عن ملف التكوين لل Rake middleware.

Bundler

بعد انشاء التطبيق, نستعمل الBundler من أجل تثبيث و ادراج الجيمات المستعملة و التي يحتاجها التطبيق. الصورة التالية توضح مثال لملف Gemfile و الذي يحتوي على الجيمات التي سوف نقوم بتثبيثها عن طريق ال Bundler. أغلب سطور الملف عبارة عن تعليقات (#) و هذا من أجل المساعدة و اعطاء نظرة عن أغلب الجيمات التي يمكن استعمالها و اعطاء نظرة أيضا عن الكتابة المستعملة في ال Bundler. في هذه المرحلة من الدرس نحن بحاجة إلا للجيمات الأساسية مثل : rails و جيم للتحكم في قاعدة بيانات اختيارية.(slqlite ,mysql أو postgresql).

اﻷن وقد اطلعتم على الجيمات و مكان وضعها يمكنكم ارسال اﻷمر الذي سوف يقوم بتثبيثها :

1
bundle install $

rails server

بفضل الأوامر rails new و bundle install عندنا الأن تطبيق يمكننا تشغيله, و لكن كيف ؟ لحسن الحظ رايلز يوفر تطبيق أو سكريبت يسمح بتشغيل حاجز ألي (web server) محلي لا يمكن الوصول اليه الا بواسطة اﻷلة المحلية.

1
2
3
4
5
6
7
8
rails server $
=> Booting WEBrick
=> Rails 3.2.1 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-07-04 13:32:49] INFO  WEBrick 1.3.1
[2012-07-04 13:32:49] INFO  ruby 1.9.3 (2012-04-20) [i686-linux]
[2012-07-04 13:32:49] INFO  WEBrick::HTTPServer#start: pid=18106 port=3000

بعد ارسال الأمر rails server يخبرنا رايلز كما هو موضح أنا التطبيق شغال على الباب 3000 على العنوان 0.0.0.0 . هذا العنوان يرشد الألة للانصات على كل العناوين IP المكونة على الالة, مثل 127.0.0.1 و المعروف ب localhost. يمكنكم ملاحظة النتيجة على العنوان http://localhost:3000, مثل الصورة التالية :


بعض الموارد للبدء ب Rails

ماهي الأدوات التي بمكن أن تسهل لي العمل على لغتي المفضلة ؟ ماهي الكتب و الدروس التي يجب أن أبدأ بها ؟ أسئلة تتكرر عندما نريد تعلم و استخدام أية لغة برمجة. نفس الأسئلة يطرحها مبتدئ مثلي من أجل تعلم Rails. لهذا اخوتي أقترح عليكم بعض الموارد و الكتب التي سوف تعينكم ان شاء الله في بدء مغامرتكم “الروبستية” على قضبان “الرايلز”, بالتركيز على الموارد الخاصة ب “Rails”. أعتقد أن أي مبتدئ بأي لغة يمكنه الاعتماد على الدروس المقدمة من المورد المختص أو “الرسمي” للغة البرمجة والذي ينشأه بشكل عام مصممو اللغة. فيما يخص “Rails”,تعتبر صفحة http://rubyonrails.org المورد الرئيسي بلا منازع من حيث تنوع المعلومات و الدروس الخاصة ب Rails.

كتاب جميل هو ذلك الكتاب دروس روبي اون رايلز المقدم من طرف مايكل هارتل. الكتاب عبارة عن مثال لتطبيق اجتماعي معروض بطريقة تجعل القارئ و المتعلم يجوب أغلب أساسيات ل Rails. شخصيا تعلمت الكثير من هذا الكتاب السهل الممتع و الذي يشمل على الكثير من المعلومات.

لعلكم بعد اطلاعكم على Rails أو بالأحرى Ruby لاحظتم تركيزه على ال gems والتي هي عبارة عن مجموعة من الحزم التي تساعد بشكل كبير في تطوير التطبيقات باستعمال Ruby و بالتالي Rails الذي يستفيد بشكل كبير من هذه الخاصية :

  • https://www.ruby-toolbox.com عبارة عن مخزن لروابط أهم “الجيمات” (gems) مصنفة على مجموعات من الفئات مثل : الجيمات الخاصة بتسيير قاعدة البيانات أو تلك الخاصة بواجهات التحكم (Active admin). لنفس الأهداف تعتبر http://railscasts.com عن صفحة غنية بالفيديوهات و الدروس التي تساعد في تطوير التطبيقات بشكل جد محترف, حتى و ان كنا نأسف لأن بعض الدروس ليست مجانية.
  • آخر مورد أطرحه عليكم هو http://railsforzombies.com الذي يحتوي على أجمل الدروس المختصرة و بقالب مروع و لكن فكاهي مع بعض التمارين التي تتدرج من السهل الى الصعب مع التنقيط, هنا أيضا الوصول لبعض الدروس ليس مجانيا و لكن يجب الاشادة بالفكرة التي وراء هذه الصفحة.

تثبيث ruby on rails

يسهل Ruby On rails تطوير التطبيقات على الويب مع جعلها فعالة و قوية. لهذا لن نتعجب من سهولة تثبيثه. الطريقة السهلة من أجل تثبيث Rails (على اللينوكس) هي استعمال RubyGems بالطريقة الأتية :

                                                            `gem install rails`   

تعتبر RubyGems عن نظام ادارة حزم ل Ruby يشبه لحد كبير apt-get و يستعمل من أجل تثبيث المكتبات البرمجية و التطبيقات الخاصة ب Ruby. أما عن Ruby فلتثبيثه يمكن استعمال Ruby Version Manager و التي تسمح بتسيير الاصدارات الخاصة ب Ruby بطريقية يدوية. لمزيد من المعلومات حول كيفية تثبيث Ruby بواسطة Ruby Version Manager يمكنكم الاطلاع على الرابط التالي روبي على اوبنتو. مع العلم أن الاصدار 1.9.3 يعتبر الاصدار المفضل للعمل ب Rails حتى و ان كانت الاصدارات 1.8.7,1.9.1, 1.8.4 و 1.8.2 تليق أيضا ما عدا الاصدار 1.8.3 . كما تلاجظون لقد ركزت مدونتي على التثبيث على ألة لينوكس لأنه و بكل بساطة غالبية ‘المجتمع الروبيستي’ يعتمد على لينوكس في برمجة التطبيقات الروبية و ليسامحني محبو الويندوز.


نبذة عن ruby on rails

بسم الله الرحمن الرحيم

أبدأ معكم اليوم سلسلة تعلم Rails و التي هي عبارة عن مجموعة من المدونات باللغة العربية من أجل التحكم في Ruby on Rails. مع العلم انني بدأت اكتشاف هذه البرمجة حديثا. هذه المدونة عبارة عن مقدمة لباقي المدونات اﻷخرى انشاء الله.

نبذة عن Ruby on Rail : عبارة عن منصة عمل(framework) من أجل الويب(web)، قام بإنشائها “دافيد هانيمير” و الذي قام بنشره ابتداء من عام 2004 و اشتهرت بشكل سريع منذ ذلك الحين ۔ رغم احتوائه على الكثير من المكونات التي يمكن استخدامها بشكل منفرد بحيث يجعلها في متناول الجميع الى ما وراء البرمجة السهلة للويب. توجد هناك 6 مكونات رئيسية لrails. من بين هذه المكونات، اثنان ليسو على الاطلاق محددين لبرمجة الويب على الخصوص :

أ.Activerecord : هذه الوحدة مكونة من مجموعة فئات (class) متخصصة في ربط الكائنات (object) مع قاعدة البيانات. الفائدة من استعمال هذه القاعدة يكمن في التخلص بصفة كبيرة من الSQL بحيث ان التفكير في البيانات و المعلومات يلخص في التعامل مع الكائنات (object).

ب. ActiveSupport : هذه الوحدة مكونة من مجموعة من الملحقات (extension) من أجل المكتبة البرمجية للغة. بامكاننا العثور على ملحقات لتعامل مع الجداول، الأرقام، سلسلة الحروف…الخ أما الوحدات الأخرى، فهي وحدات خاصة ب Rails و تتكون من مجموعة فئات لتسهيل كتابة البرامج في Rails.

ج. ActionView : تقدم هذه الوحدة مجموعة من المساعدات (helpers)، و مثال ذلك أن الذي يريد التعامل مع أجاكس (AJAX) يجب ان يدقق في مكونات هذه الوحدة.

د. ActionController : تساعدنا كثيرا عندما نريد انشاء وحدات التحكم (controllers).

ه. ActionMailer : تسمح و تسهل ارسال و استقبال الايميلات.

و. ActioWebService : تسمح بانشاء خدمات الويب (web services) بطريقة جد سهلة.


المدونة الأولى

بسم الله الرحمن الرحيم

أول مدونة لي باللغة العربية، أرحب بكل من يزورني على مدونتي و اتمنى تبادلا شيقا بيني و بين الكل