شما ممکن است برای ساخت وب سایت از زبانها و Framework های مختلفی استفاده کنید، پر استفاده ترین آنها ASP و PHP است، اما از سال ۲۰۰۴ یک Framework جدید وارد عرصه اینترنت شد و باعث شگفتی بسیاری از برنامه نویسان شد. در این پست در باره یه Framework صحبت می کنیم، شاید اسمش رو شنیده باشید، Ruby on Rails. قبل از توضیح دادن در مورد این زبان بهتر هست در مورد زبان Ruby و یکسری اصطلاح ها صحبت کنیم.
مجموعه ای از نرم افزار، کتابخانه هایی که قبلا نوشته شده و ساختارهای سازمان دهی شده است که برای کمک در نوشتن برنامه های کاربردی به کار میرود.
باید توجه داشته باشید که Ruby on Rails یک Web Framework است که بر مبنای زبان Ruby نوشته شده است، مشخصات زبان Ruby بدین شرح است :
● Ruby یک زبان برنامه نویسی است که توسط Yukihiro “matz” Matsumoto در سال ۱۹۹۵ ابداع شده است.
● شباهتهای زیادی به Perl، SmallTalk، Python و LISP دارد.
● Ruby فقط برای Web Application ساخته نشده است و همانند زبانهای مثل C کاربردهای بسیاری دارد.
● یک زبان شی گرا Object Oriented است.
● وب سایت : www.ruby-lang.org/en
مثال کلاسیک Hello world:
● یک Web Framework است.
● به زبان Ruby نوشته شده است.
● در سال ۲۰۰۴ توسط David Heinemeier Hansson ساخته شده است.
● این زبان Open Source هست.
● وب سایت : www.rubyonrails.com
اولین ویژگی که خیلی ممکن است به آن برخورد کنید و خیلی از آن صحبت میشود DRY است، این واژه مخفف Don’t Repeat Yourself است. بدین معنی است که در Rails شما باید سعی کنید فقط و فقط هر کد را یکبار و در یکجا بیاورید و نباید آنرا در جاهای مختلف برنامه تکرار کنید، این ویژگی این امکان رو به برنامه نویس میدهد تا به راحتی برنامه خود را کنترل کند و هر بار برای تغییرات روی آن نخواهد در صدها خط کد و حتی بیشتر دنبال قسمت مورد نظر بگردد.
مورد دیگر Conventions & Sensible Defaults است. به این معنیست که برای مثال وقتی شما در حال کار با Database هستید، Rails به طور پیش فرض یکسری قوانین و کدهایی رو برای اتصال به بانک اطلاعاتی شما در خود دارد و این امکان زو به شما میدهد تا بدون اینکه نیاز به کد نویسی زیادی داشته باشید به راحتی به بانک اطلاعاتی خود متصل شوید و Rails سایر کارها را خودش برای شما انجام میدهد.
اما شما هم میتوانید خودتان این کد نویسیها را انجام دهید بدون استفاده از Conventions & Sensible Defaults. اما استفاده از این ویژگیها در زمان و انرژی شما صرفه جویی زیادی خواهد کرد. یک مثال خیلی ساده این است که برای مثال شما دارید با بانک اطلاعاتی دانش آموزان کار میکنید، وقتی به Rails میگویید که Student (به مفرد بودن کلمه Student دقت کنید) Rails می فهمد که شما دنبال یک id از جدول Student ها هستید اما وقتی بگویید Students (به S که در آخر Student آمده دقت کنید) که یک کلمه جمع است Rails میفهمد که شما با چند id از جدول Student کار دارید. این یک مثال ساده از این ویژگی مفید هست.
مثال دیگر این است که همه Javascript ها یا CSS ها در فولدرهای مربوط به خودشون هستند، همه چیز مرتب و سازمان دهی شده است. شما میتوانید این قوانین و پیش فرض ها را تغییر دهید ولی دنبال کردن این موارد شما را خیلی جلو میندازه و بهتون خیلی کمک میکنه.
نکته دیگر که باعث قدرت Rails شده است ساخته شدن آن روی ساختار MVC است. این واژه مخفف کلمه های Model، View و Controller است. MVC از دو ویژگی که در بالا ذکر کردم استفاده میکند. در Model همه Object های ما با Database در ارتباط هستند و نه در جای دیگر، این همان ویژگی DRY است، چون شما فقط در Model با بانک اطلاعاتی در ارتباط هستید. لایه View همان قسمتی است که کاربر با آن در ارتباط است، همان صفحه های HTML که کاربر در انتها خواهد دید در این لایه ساخته میشوند. لایه Controller قسمتی است که وظیفه عکس العمل نشان دادن به Event ها را دارد و با دو لایه View و Model در ارتباط است.
به شکل زیر دقت کنید :
در روش Non-MVC معمولا در سایتهای سنتی که با ASP و PHP نوشته شده اند استفاده میشه ولی روش MVC در Ruby on Rails استفاده میشود. در روش سنتی مرورگر درخواست به View میفرستد و اگر لازم باشد View با بانک اطلاعاتی ارتباط برقرار میکند و پاسخ آنرا در View نشان میدهد. (در این روش Controller و Model درون همان View هست). البته این نکته را باید مد نظر داشت که ممکن است برنامه نویسان ASP و PHP از روش MVC هم استفاده کنند ولی بیشتر برنامه نویسان این زبانها از این روش استفاده نمیکنند.
اما در روش MVC مرورگر درخواست خود را به Controller میفرستد (Controller وظیفه کنترل کردن Event ها را دارد و با Model و View در ارتباط است) Controller این درخواست را پردازش میکند و میبیند که مثلا چه لینکی کلیک شده است یا چه URL وارد شده است و آن را به Model میفرستد، Model با بانک اطلاعاتی ارتباط برقرار میکند و اطلاعات لازم رو دریافت میکنه یا درون آن قرار میده، سپس Model این اطلاعات رو به Controller میدهد و به آن میگوید که چه اطلاعاتی از Database گرفته و یا در آن قرار داده، Controller ممکن است بر حسب نیاز با Model دوباره ارتباط برقرار کند و در نهایت اطلاعات رو به View میفرستد تا نمایش داده شوند.
این روش به خوبی با DRY همخوانی دارد، شما وقتی بخواهید مثلا تغییری در Database بدهید میدانید که باید در Model این کار رو انجام دهید. اگر بخواهید Event ها رو کنترل کنید در Controller تغییر میدهید و اگر بخواهید در نمایش اطلاعات برای کاربر تغییر ایجاد کنید میدانید که در View باید این کار رو بکنید. پس میبینید که همه چی در Rails سازماندهی شده است و شما میدانید که در کجا باید تغییرات را ایجاد کنید. اما در روش سنتی ممکن است شما همه صفحات رو مرور کنید تا بخواهید یک تغییر کوچک در برنامه خود ایجاد کنید.