Ruby on Rails (3)
مقدمه:
در دو بخش گذشته توضیحات نسبتا کاملی درباره زبان Ruby و ابزار توسعه Ruby on Rails برای نرم افزارهای تحت وب (Web Based) در اختیار شما قرار گرفت. گفتیم که این زبان از لحاظ کارایی و سادگی استفاده نسبت به زبان های دیگر دارای برتری هایی می باشد. اما اینجا پرسشی وجود دارد و آن این است که چرا اینگونه زبان ها در ایران مورد توجه قرار نمی گیرند؟ چرا ابزارهایی مثل .NET بین توسعه دهندگان نرم افزارها بسیار محبوب هستند؟ شما در مورد این پرسش ها چه می اندیشید؟ از دیدگاه ما یکی از دلایل، نبود Copyright می باشد. توجه داشته باشید که زبان Ruby و ابزار Ruby on Rails یک محصول کد باز (Open Source) می باشد. بنابراین در کشورهایی که قانون Copyright وجود داشته و همگان وظیفه دارند از این قانون تبعیت کنند، کسانیکه در زمینه توسعه نرم افزارها فعالیت می کنند همواره به دنبال ابزارهایی هستند که Open Source بوده و بتوانند بدون هیچ محدودیتی از آنها استفاده نمایند. بنابراین در اینگونه کشورها ابزارهای Open Source مثل Linux ، Java ، Ruby و... دارای جایگاه ویژه ای هستند و در صد قابل توجهی از توسعه دهندگان از این ابزارها به شکل وسیعی استفاده می کنند.
آشنایی با تکنولوژی AJAX (Asynchronous Java Script and XML) در Web 2.0
نرم افزارهای تحت وب تجاری امروزه در رده نرم افزارهای سازمانی (Enterprise) قرار می گیرند. آنها برای تمام کارها از مدیریت ارتباط با مشتری گرفته تا طراحی منابع سازمانی (ERP) مورد استفاده قرار می گیرند. اگر چه آنها نرم افزارهای سودمندی می باشند ولی اینگونه نرم افزارها در بیشتر بخش ها شامل فرم های HTML و کدهایی که وظایف سنگینی در طرف Server انجام می دهند می باشد. رابط کاربر (UI) معمولا ضعیف بوده و در تعامل با کاربر نمی باشد. به طوریکه با هر بار وارد کردن اطلاعات و ارسال آنها به سرور یکبار صفحه به طور کامل باید Refresh گردد. واین عمل به خصوص با اینترنت کم سرعت برای کاربر بسیار خسته کننده می باشد.
در اینجا AJAX ابزاری بسیار مفید برای بهینه ساختن نرم افزارهای تحت Web می باشد. این روش برای گسترش امکانات نرم افزارهای تحت وب و کارهایی که کاربر در مرورگر خود انجام می دهد مورد استفاده قرار می گیرد. AJAX، نه تنها برای بهینه کردن و متحول کردن معماری سنتی وب بوده بلکه ابزاری است که برنامه های تحت وب را با نرم افزارهای desktop قابل رقابت می سازد.
شرکت Google یکی از توسعه دهندگان AJAX بوده و در خیلی از محصولات خود مثل Gmail و Google Maps از آن به طور گسترده ای بهره برده است. AJAX اصولا تغییر نامی است از DHTML. AJAX در حال حاضر در خیلی از نرم افزارها و تکنیک های web مورد استفاده قرار می گیرد.
ایجاد یک برنامه جدید
بعد از نصب کردن محیط Rails شما می توانید از یک دستور جدید استفاده نمایید. دستور rails، که برای ایجاد یک برنامه جدید مورد استفاده قرار می گیرد. برای ایجاد یک برنامه جدید یک کنسول باز کرده و وارد پوشه ای شوید که می خواهید برنامه های جدید در آن ایجاد شوند. در مثال ما یک پوشه به نام work وجود دارد. در آن پوشه از دستور rails برای ایجاد یک برنامه جدید به نام demo استفاده نمایید. توجه داشته باشید اگر پوشه ای با آن نام موجود باشد. از شما برای جایگزین کردن پرسش می شود.
dave> cd work
work> rails demo
create
create app/controllers
create app/helpers
create app/models
create log/development.log
create log/test.log
work>
دستور rails یک پوشه با نام demo ایجاد می کند. وارد آن پوشه شده و محتوای آنرا لیست کنید(در ویندوز دستور dir) شما باید فایل ها و زیر دایرکتوری ها را مشاهده نمایید. ما از تعدادی از این پوشه ها استفاده می کنیم. پوشه app برای نوشتن برنامه و پوشه Script که شامل دستورات مفیدی می باشد.
اجازه دهید به پوشه Script بپردازیم. یکی از اسکریپت های آن Server نامیده می شود. این Script یک Web Server را اجرا نموده که نرم افزار جدید ما به وسیله آن اجرا می گردد.
demo> ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2006-01-08 21:44:10] INFO WEBrick 1.3.1
[2006-01-08 21:44:10] INFO ruby 1.8.2 (2004-12-30) [powerpc-darwin8.2.0]
[2006-01-08 21:44:11] INFO WEBrick::HTTPServer#start: pid=10138 port=3000
همانطور که آخرین خط نشان می دهد یک وب سرور روی پورت 3000 اجرا شده است. ما می توانیم در یک مرورگر وب با وارد کردن آدرس http://localhost:3000 به برنامه دسترسی پیدا کنیم.
زمانیکه به پنجره کنسول نگاه می کنید در آنجا محلی برای پیگیری اجرای نرم افزار خواهید دید. این پنجره کنسول را در همین حالت قرار می دهیم. زمانیکه بخواهیم برنامه را به پایان برسانیم می توانیم با استفاده از کلید ترکیبی Ctrl+C در این پنجره وب سرور را غیر فعال نماییم.
Hello, Rails
همانطور که قبلا گفته شد، Rails یک محیط Model-View-Controller می باشد که درخواست های ورودی از یک مرورگر را دریافت نموده، آنرا برای پیدا کردن یک Controller ترجمه کرده و یک متد را در آن Controller فرا خوانی می کند. سپس Controller یک نمای (view) ویژه برای نمایش نتایج به کاربر در خواست می کند. برای نوشتن برنامه ساده Hello, World ما نیاز به نوشتن کد برای یک Controller و یک View داریم. ما نیازی برای کد نویسی برای Model نداریم، زیرا با هیچ گونه داده ای مواجه نیستیم.
به همان روشی که ما از دستور rails برای ایجاد کد برنامه جدید استفاده کردیم، می توانیم از یک دستور تولید کننده (generator) برای ایجاد یک Controller جدید برای برنامه خود استفاده نماییم. این دستور generate نامیده شده و در پوشه Script مربوط به پروژه demo که ما ایجاد کرده ایم قرار دارد. بنابراین برای ایجاد یک Controller با نام Say ، ما با اطمینان از اینکه در شاخه demo قرار داریم دستور زیر را اجرا می کنیم.
demo> ruby script/generate controller Say
exists app/controllers/
exists app/helpers/
create app/views/say
exists test/functional/
create app/controllers/say_controller.rb
create test/functional/say_controller_test.rb
create app/helpers/say_helper.rb
این دستور فایل ها و پوشه های به وجود آمده را ثبت می کند. فایل جدید به وجود آمده در این مسیر قرار دارد:
app\controllers\say-controller.rb
آنرا باز می کنیم:
class SayController < ApplicationController
end
SayController یک کلاس خالی بوده و از ApplicationController به ارث برده است.
بنابراین به صورت اتوماتیک تمام خصوصیات یک Controller را داراست. ما نیاز داریم مقداری کد به آن اضافه کنیم. در حال حاضر ما نیاز به اضافه نمودن یک متد خالی داریم. سوال اینست که چه چیزی این متد را فرا خوانی می کند؟ و باید بگوییم که Rails درخواست ها را مدیریت می کند.
Rails و URL ها
شبیه به هر برنامه تحت وب دیگر یک برنامه نوشته شده توسط Rails به وسیله URL با کاربر ارتباط برقرار می کند.
http://myurl.com/say/hello
say: Controller
hello: action(method)
فرض کنید برنامه شما در آدرس http://myurl.com قرار دارد. وب سروری که میزبان نرم افزار شماست به صورت کاملا هوشمندانه مسیرها را شناسایی می کند. آن می داند که درخواست های ورودی به این آدرس با نرم افزار ارتباط دارد.
Rails از مسیر (path) برای تشخیص نام Controller و متدهای آن استفاده می کند.
اولین متد
ما یک متد به نام hello به SayController اضافه میکنیم. اما چه کاری انجام میدهد؟ در حال حاضر هیچ! به خاطر داشته باشید کار یکController ایجاد تنظیمات برای اینکه View بداند چه چیزی را باید نمایش دهد میباشد. در این برنامه چیزی برای انجام دادن در متد وجود ندارد بنابراین یک متد خالی کافیست. از ویرایشگر مورد دلخواه خود برای تغییر فایل say_controller در app\controllers استفاده نموده و متد hello را به آن اضافه نمایید:
class SayController < ApplicationController
def hello
end
end
حال میخواهیم آنرا فراخوانی نماییم. در مرورگر خود آدرس http://localhost:3000/say/hello را وارد نمایید. شما پیغامی شبیه به این ملاحظه مینمایید:

علت این خطا کاملا مشخص است. ما کلاس Controller و متد آنرا ایجاد نمودیم اما به Rails نگفتیم که چه چیزی را به نمایش گذارد.
برای کامل نمودن برنامه یک الگو ایجاد مینماییم. به طور پیش فرض Rails به دنبال الگوها در فایلهای .rhtml با نامی یکسان با نام متد میگردد. در ابن برنامه ما فایلی با نام hello.rhtml در مسیر app\views\say ایجاد مینماییم و کد زیر را در آن قرار میدهیم:

Hello from Rails!
فایل را ذخیره کرده و مرورگر خود را یکبار Refresh کنید. شما باید پیغام مورد نظر را در مرورگر ملاحظه کنید. توجه نمایید که نیازی به compile کردن برنامه نداریم. در طول نوشتن برنامه، Railsبه طور اتوماتیک تغییرات را روی نرم افزار اعمال میکند.

۱ نظر:
سلام
ما به دنبال یک برنامه نویس حرفه ای ruby on rails هستیم. اگر مایل به همکاری هستید لطفا رزومه خود را به آدرس edmoproject@gmail.com بفرستید.
با تشکر
محمد
ارسال یک نظر