مقدمه
در بخشهای قبلی، با زبان برنامهنويسی روبی و پلتفورم ريلز آشنا شديم و ديديم که روبي زبانی برای برنامهنويسی آسان و بیدردسر است و ريلز، پلتفورمی تحت وب برای آن فراهم میآورد تا برنامههای روبی تحت آن اجرا شود. به روبی تحت پلتفورم ريلز، «روبی آن ريلز» میگويند.
ديديم که «روبی آن ريلز»، تصميمگيریها را برای برنامهنويس به حداقل میرساند و خود، بسياری از کارها را انجام میدهد. با نحوه نصب «روبی آن ريلز» آشنا شديم و به صورت مقدماتی شیء و کلاس را در اين زبان بررسی کرديم.
حالا نوبت آن رسيده که کمي درگير نوشتن برنامههاي جديتر با روبي شويم. برنامههای روبي تحت وب اجرا میشوند و نياز به داشتن يک سرور تحت وب خواهيد داشت. البته ريلز، يک سرور تحت وب محلی برای شما فراهم میآورد تا بتوانيد حتی بدون احتياج به اينترنت برنامههای روبي را در کامپيوتر شخصیتان اجرا کنيد. نحوه کار کردن با آن را در همين قسمت توضيح خواهيم داد.
کار را با ايجاد يک پروژه ساده شروع و سعي ميکنيم که مفاهيم اصلي را در ضمن توضيح پروژه، شرح دهيم.
البته همان طور که در قسمتهای قبلی ديدهايد، براي نوشتن برنامه به زبان روبي بايد با دستورات ساده خط فرمان آشنا باشيد.
شروع
هر پروژه روبي، از تعداد زيادي پوشه و فايل تشکيل شده که همگي در يک پوشه مادر قرار گرفتهاند. نام اين پوشه اصلي، همان نام پروژه شماست و پروژه شما به همراه تمامی ملزوماتش در اين پوشه قرار میگيرد. البته زيرپوشههای لازم را خود برنامه برای شما میسازد و احتياجی نيست فعلا درگير آن شويم.
براي شروع کردن و ايجاد يک پروژه جديد، کافي است به خط فرمان برويد و سپس با دستور CD به پوشهاي وارد شويد که قصد داريد پروژه را در آن تشکيل دهيد.
مثلا، فرض کنيد ميخواهيد در پوشه C:\Projects، يک پروژه جديد درست کنيد و نام آن را barname بگذاريد.
ابتدا پنجره خط فرمان را باز کنيد، سپس در آن به پوشه C:\Projects برويد و بعد، دستور زير را بنويسيد(شکل 1) :

شکل 1
با اجراي اين دستور، يک پوشه به نام barname ايجاد ميشود و زيرشاخهها و فايلهاي لازم در درون آن ايجاد ميگردد( شکل 2). محل اين پوشه همان طور که مشخص است در پوشهای است که شما در خط فرمان به داخل آن رفته بوديد.

شکل 2
در حال حاضر، پروژهاي که شما ايجاد کردهايد تنها نيازمندیهای اوليه يک پروژه روبي را دارد و چيز خاصي در آن قرار نگرفته است و کاری انجام نمیدهد. در هر حال، اين کاری است که بايد برای شروع هر پروژهای آن را انجام دهيد. پروژههای روبی در ابتدا به اين شکل هستند و بعد، با افزودن و تغييرات مداوم تبديل به آن چيزی میشوند که برنامهنويس میخواهد.
برنامههاي تحت پلتفورم ريلز بايد تحت سرورهای وب اجرا شوند. البته میتوان آنها را تحت سرورهای وب مختلف اجرا کرد،. يعني ميتوانيد آنها را در هر سرور وباي که خواستيد آپلود کنيد و آنجا اجرا نماييد. براي اين که کار راحت باشد، اينجا از سرور وب خود روبي استفاده ميکنيم که امکان استفاده محلی در کامپيوتر را فراهم میسازد.
اين سرور WEBrick نام دارد و به شما اجازه ميدهد که بدون آن که نياز داشته باشيد پروژه خود را در يک سرور ديگر در اينترنت قرار دهيد و از آنجا اجرا کنيد، بتوانيد آن را روي کامپيوتر شخصيتان اجرا نماييد . WEBrick در توصيفی اجمالی، يک کتابخانه روبی است که برای آزمايش برنامهها قبل از نوشتن برنامه اصلی به کار میآيد و با آن سر و کار زيادی خواهيم داشت. البته برای اجرای اصلی برنامه معمولا از اين سرور استفاده نخواهيم کرد.
براي استفاده از اين سرور، در خط فرمان به پوشه پروژه خود برويد (در اين مثال بنويسيد cd barname) و در آن جا، دستور زير را براي راهاندازي سرور را اجرا کنيد( شکل 3):

شکل 3
بعد از اجراي اين دستور، اطلاعاتي شبيه به شکل 4 را در پنجره خط فرمان مشاهده خواهيد کرد.

شکل 4
اگر موارد فوق را ديديد، کار به درستي انجام شده است. حالا بدون آن که پنجره خط فرمان را ببنديد، مرورگر اينترنت خود را باز کنيد. در اين جا فرقي ندارد که از اينترنت اکسپلورر، فايرفاکس يا مرورگرهاي ديگر استفاده کنيد و در انتخاب آنها آزاد هستيد. سپس به آدرس http://127.0.0.1:3000/ برويد( شکل 5).

شکل5
اين آدرس از پورت 3000 روي آدرس 127.0.0.1 استفاده ميکند. همان طور که احتمالا ميدانيد اين آدرس، نشاني کامپيوتر شخصي شماست و پورت 3000 هم براي WEBrick است.
تبريک ميگوييم. شما اولين اجراي يک برنامه تحت روبي را به اين ترتيب تجربه کردهايد. در مراحل بعدي، برنامههای پيشرفتهتری خواهيم نوشت و از اين قبيل اجراها را زياد تجربه خواهيم کرد.
آدرسی که شما وارد کرديد، يعنی http://127.0.0.1:3000، آدرس پايه شما در روبی است و در تقريبا تمامي آدرسهايي که از اين به بعد برای تست برنامههای نوشته شده وارد خواهيم کرد، آدرس بالا در بخش نخست آدرسهای ديگر حضور خواهد داشت.
همان طور که در شکل 5 میبينيد، روبی تشخيص داده که کار خاصی برای اين پروژه انجام نشده است و به همين دليل به شما ياد داده که چه کارهايي بايد انجام شود. طبق آن چيزی که در تصوير میبينيد، بايد مدلها و کنترلرها را ساخت که اين کار با دستور script/generate انجام میشود؛ کنترلرها در واقع از اصلیترين بخشهای برنامه هستند. يک مسير پيشفرض توليد کرد و پايگاه داده مورد نظر را ايجاد نمود. درباره اين کارها کمی در بخش پايين توضيح دادهايم.
نگاهي به پوشههاي ساخته شده
ريلز همه کاري انجام ميدهد تا ميزان تصميماتي که شما بايد بگيريد را به حداقل برساند و کارهاي غيرضروري شما را حذف ميکند. مثلا شما ديديد که وقتي شما از دستور rails براي شروع يک پروژه استفاده کرديد، پوشهها و فايلهاي بسيار زيادي ايجاد شد. خود ريلز ميداند که در صورت لزوم، به کدام پوشه برود و کدام فايل را بخواند( شکل 6).

شکل 6: فايلها و پوشههاي ايجاد شده در پوشه barname
بخش عمدهاي از نوشتن يک برنامه به ساختن و تغيير دادن فايلهاي موجود در پوشه barname\app برمیگردد. در اين پوشه در حال حاضر چهار پوشه ديگر وجود دارد که توضيح مختصري درباره هر کدام از آنها ميدهيم ( شکل 7). در آينده با عملکرد هر پوشه بيشتر آشنا خواهيم شد ولي حالا ذکر يک توضيح کوچک درباره هر کدام از اين پوشهها ضروري است.

شکل 7
پوشه controllers جايي است که ريلز در آن به دنبال کلاسهاي کنترلگر ميگردد. يک کلاس کنترلگر، با درخواستهاي ارسال شده از سوي کاربران سر و کار دارد. اين درخواستها در اين پوشه تحت پردازش قرار میگيرند و جواب لازم توليد میگردد. در حقيقت، بسياری از قسمتهای برنامه به عنوان کلاسهای کنترلرگر مطرح میشود و در اين بخشها نوشته میگردد.
پوشه views شامل قالبهاي نمايشي ميشود. دادههايي که قرار است به کاربر نشان داده شوند، ابتدا در يکي از اين قالبها قرار ميگيرند، سپس به کد HTML تبديل ميشوند و بعد از پيدا کردن سر و شکل گرافيکي مناسب، در مرورگر کامپيوتر کاربر به نمايش درميآيند.
پوشه models حاوي کلاسهايي است که دادههاي موجود در پايگاه داده برنامه ما را مدل کرده و ذخيره ميسازند. در بسياري از پلتفورمهاي ديگر اين بخش معمولا بسيار شلوغ و کثيف و پرحجم است و کار کردن با آن ملالتآور است. ضمن آن که خطاهاي بسياري ممکن است در همين بخش روي دهد. يکي از بزرگترين نقاط قوت روبي، اين است که کار کردن با اين بخش آن، بر خلاف ساير رقبا بسيار بسيار ساده و راحت است، چيزی که در قسمتهای بعدی آن را خواهيد ديد.
پوشه helpers شامل کلاسهاي helper ميشود که براي کمک به کلاسهاي
view، model و controller هستند و آنها را ساده و کوچک نگه ميدارند.
درباره اين بخشها و مراحل ساخت قسمت هاي مختلف پروژه در قسمت بعدي توضيح بيشتري خواهيم داد. در قسمتهای بعدی، ابتدا چند برنامه کوچک خواهيم نوشت، بعد يک پايگاه داده خواهيم ساخت و آن جا خواهيم ديد که استفاده از پايگاههای داده در «روبی آن ريلز» چقدر راحت و سريع است.