۱۳۸۶ اسفند ۱۴, سه‌شنبه





بخش 7 از مجموعه مقالات Ruby on Rails
ترجمه: ابوالفضل محمودی (ab.mahmoodi@gmail.com)
منبع: Practical Rails Projects (Book)
نویسنده: Eldon Alameda

توسعه نرم افزارهای واقعی با استفاده Ruby on Rails
در این بخش و بخش های دیگر میخواهیم قسمتهایی از یک نرم افزار واقعی را در محیط Ruby on Rails پیاده سازی نماییم. در این بخش ها قدم به قدم پیش رفته و قسمتهای مختلف را با ارائه توضیحات کامل پیاده سازی مینماییم.
هدف ما از ارائه اینگونه مقالات آموزشی معرفی هر چه بیشتر امکانات فوق العاده این ابزار بوده و اینکه بگوییم استفاده از ابزارهای کد باز (Open Source) نسبت به به ابزارهای توسعه تجاری بسیار آسانتر و توسعه نرم افزار با آنها سریع تر امکانپذیر میباشد.
Ruby on Rails یک محیط توسعه نرم افزارهای تحت وب میباشد و با وجود اینکه مدتی بیش نیست که از تولد آن میگذرد جای خود را در بین توسعه دهندگان وب پیدا کرده و حرف های زیادی برای گفتن دارد. بطوریکه تقریبا هر ماه در نقاط مختلف دنیا همایش هایی برگزار شده و در مورد امکانات جدید این ابزار گفتگو میشود.
پیاده سازی یک سیستم ثبت نام و تعیین معرف کاربر (User Registration and Authentication System) با استفاده از ابزار توسعه Ruby on Rails
با پیاده سازی ساختار پروژه آغاز نموده و با استفاده از دستور "rails" در محیط اجرای دستورات Rails (Command Prompt) پروژه ای با نام "monkey" ایجاد میکنیم.
برای آشکار شدن مطلب ما میخواهیم از بیرون کار شروع کنیم. ما با ساختن پایه های کار و الگوهای برنامه (Templates) ، پروژه را آغاز مینماییم. سپس برای اضافه نمودن سیستم ثبت نام و تعیین معرف کاربر مدل ها، کنترولرها و متدهایی که مورد نیاز است را به برنامه اضافه نموده تا شکل واقعی را به خود بگیرد.
پیاده سازی صفحه آرایی (layout)
این یک برنامه مدیریت وظیفه (Task Management) میباشد بنابراین ما به یک صفحه نیاز داریم که لیست وظایف روزانه را نمایش دهد بنابراین اجازه دهید جلوتر رفته و اولین صفحه و یک کنترولر را ایجاد کنیم، نام این کنترولر را "today" میگذاریم.
دستور زیر را اجرا نموده که توسط آن یک کنترولر با نام "today_controller.rb" و یک صفحه خالی (index) ایجاد میکند.
ruby script/generate controller today index
exists app/controllers/
exists app/helpers/
create app/views/today
exists test/functional/
create app/controllers/today_controller.rb
create test/functional/today_controller_test.rb
create app/helpers/today_helper.rb
create app/views/today/index.rhtml
خوب حال کنترولر جدید ما در مسیر app/controllers/ ایجاد شده و صفحه index.rhtml در مسیر app/views/today ایجاد شده است.
با باز کردن فایل today_controller ما خواهیم دید که ریلز متد index را درون آن ایجاد نموده است.
class TodayController < controller =""> "today"
map.connect ':controller/service.wsdl', :action => 'wsdl'

# Install the default route as the lowest priority.
map.connect ':controller/:action/:id.:format'
map.connect ':controller/:action/:id'
end
صفحه آرایی ابتدایی
یک صفحه وب علاوه بر کارایی بایستی دارای زیبایی نیز باشد. در ریلز امکاناتی وجود دارد که با استفاده از آنها میتوان این زیبایی را به صفخات بخشید. یکی از آن امکانات کلیدی این است که ما قادر هستیم قالب هایی را برای جدا نمودن آیتم های نمایش از قبیل "header" و "footer" در یک فایل ایجاد نموده که در تمام صفحات قابل استفاده میباشد. به طور ساده فایل را با محتوای مورد نظر خود ایجاد مینماییم.
هدف ما این است که طرحی ساده و جذاب ایجاد نماییم بنابراین میتوانیم با ایجاد کردن یک فایل برای تمام برنامه کار را جلو ببریم. قبل از شروع کار شما نیاز دارید منابعی را از سایت Apress دانلود نمایید سپس فایل "styles.css" را در مسیر public/stylesheets کپی نمایید. و تمام تصاویری که دانلود نموده اید را در مسیر public/images کپی نمایید. با اضافه نمودن این فایل ها به پروژه خود میتوان جلوتر رفته و یک قالب استاندارد که تمام الگوها را پوشش میدهد ایجاد نمایید. فایلی با نام "application.rhtml" در مسیر monkey/app/views/layouts ایجاد نموده و آنرا به شکل زیر ویرایش کنید:




MonkeyTasks

<%= stylesheet_link_tag 'styles' %>
<%= javascript_include_tag :defaults %>






  • <%= link_to "Today", :controller => 'today', :action => 'index' %>


  • <%= link_to "Logout", :controller => 'account', :action => 'logout' %>


<%= flash[:notice] %>


<%= yield %>



همانطور که میبینید این شامل کدهای استاندارد HTML و چند متد مثل stylesheet_linktag 'styles' میباشد.
این متد کارش ایجاد یک لینک به فایل styles.css میباشد. در این قالب متد مذکور کد HTML زیر را تولید میکند:

متد image_tag 'monkeyhead.gif' یک عنصر HTML را تولید میکند که در اینجا لینکی به یک تصویر با نام مشخص شده ایجاد میشود که کد HTML زیر را تولید میکند:
Monkeyhead

متد link_to "Today", :controller => 'today', :action => 'index'
همچنین به متدهای درون کنترولر مشخص شده مراجعه میکند که باعث میشود ناچار به نوشتن کدهای HTML به صورت دستی نباشید. این متد کد HTML زیر را تولید میکند:
Today
متد جادویی "yield" کنترل رندر کردن صفحه را برای الگویی که قرار است رندر شود ارسال میکند. به عبارت دیگر اینجا محلی است که الگوهای حقیقی درون این قالب رندر خواهد شد.

javascript_include_tag :defaults
این متدی است در ریلز که به ما امکان میدهد به شکل خودکار نمونه های کتابخانه های JavaScript را درون صفحه قرار دهیم. در حقیقت شبیه اینست که کدهای زیر را در سورس قرار دهیم:
<%= javascript_include_tag 'prototype' %>
<%= javascript_include_tag 'effects' %>
<%= javascript_include_tag 'dragdrop' %>
<%= javascript_include_tag 'controls' %>
<%= javascript_include_tag 'application' %>


اگر شما برنامه در یک مرورگر وب اجرا کنید (این کار را با وارد کردن آدرس http://localhost:3000/today انجام دهید) نتیجه را به شکل زیر خواهید دید:


اولین الگوی ما
خوب حالا میخواهیم صفحه اصلی برنامه را ایجاد نماییم. فایل index.rhtml را در مسیر app/views/today باز کرده و کد زیر را به آن اضافه نمایید:




Today's Tasks



  • test

  • test2






بعد از وارد کردن این کد و ذخیره کردن برنامه در مرورگر کلید Refresh را کلیک کرده تا تصویر زیر ببینید:



همانطور که می بینید ما در عرض چند دقیقه صفحه اصلی برنامه را ایجاد نمودیم که یک نمایه قابل قبول را برای ما ایجاد نموده است.
در بخش های بعدی توسعه این نرم افزار را ادامه خواهیم داد.