آموزش روبی آن ریلز

در این صفحه می خوانید:

معرفی روبی آن ریلز

روبی آن ریلز یا ریلز، یک فریمورک توسعه برنامه کاربردی وب در سمت سرور است که با زبان روبی تحت مجوز MIT نوشته شده است. ریلز فریمورک مدل MVC است که ساختارهای پیش فرض برای پایگاه داده، وب سرویس و صفحات وب را ارائه می دهد. این باعث تشویق و تسهیل استفاده از استانداردهای وب مانند جی سان (JSON) یا اکس ام ال (XML) برای انتقال داده ها و همچنین اچ تی ام ال، سی اس اس و جاوا اسکریپت برای رابط کاربری است. علاوه بر MVC، ریلز بر استفاده از دیگر الگوها و پارادایم های مهندسی نرم افزار شناخته شده، از قبیل قراردادهای پیکربندی کنوانسیون (CoC) و خود را تکرار نکنید(DRY) و الگوی رکورد فعال را تاکید دارد.

دیوید هاینمیر هانسن اولین نسخه از روبی آن ریلز را به عنوان نرم افزار اوپن سورس در ماه ژوئیه سال 2004 منتشر کرد اما تا ماه فوریه 2005 حق مالکیت این پروژه را نپذیرفت. ظهور روبی آن ریلز در دهه 2000 به شدت تحت تأثیر توسعه برنامه های وب قرار گرفت. امروزه نفوذ ریلز در سایر فریمورک های وب و زبان های دیگر به چشم می خورد، از جمله جنگو در پایتون، Catalyst در پرل، لاروال و کیک پی اچ پی (CakePHP) در پی اچ پی، Phoenix در الیکسیر (Elixir)،فریمورک Play در اسکالا و فریمورک Sails.js در نود جی اس (Node.js) که ایده های خود را از روبی آن ریلز قرض می گیرند.

چرا از روبی آن ریلز استفاده کنیم؟

فرایند برنامه ریزی بسیار سریع تر از سایر فریمورک ها و زبان ها است، بخشی به دلیل ماهیت شی گرا روبی و مجموعه گسترده ای از کد اوپن سورس موجود در جامعه ریلز است. قرارداد های ریلز همچنین باعث می شود که برنامه نویسان بتوانند بین پروژه های مختلف ریلز حرکت کنند، چرا که هر پروژه تمایل به پیروی از همان ساختار و شیوه های برنامه نویسی را دارد. روبی آن ریلز برای توسعه برنامه های کاربردی سریع (RAD) مناسب هستند، زیرا فریمورک آن جایگزینی تغییرات را آسان می سازد. کد روبی بسیار خوانا و اغلب مستند ساز خودکار است. این ویژگی بهره وری را افزایش می دهد، زیرا نیاز به نوشتن اسناد جداگانه کمتری دارد و انتخاب را برای توسعه دهندگان در بین پروژه های موجود آسان تر می کند. ریلز تاکید زیادی بر تست دارد و فریمورک تست خوبی دارد.

بررسی فنی روبی آن ریلز

مانند دیگر فریمورک های وب، Ruby on Rails از الگوی model-view – controller (MVC) برای سازماندهی برنامه نویسی برنامه استفاده می کند. در یک پیکربندی پیش فرض، یک مدل در فریمورک Ruby on Rails از یک جدول در یک پایگاه داده و از یک فایل Ruby ترسیم می شود. به عنوان مثال، یک کلاس User معمولاً در فایل "user.rb" در فهرست برنامه / مدل ها تعریف و به جدول "کاربران" در پایگاه داده پیوند داده می شود. در حالی که توسعه دهندگان آزاد هستند که این کنوانسیون را نادیده بگیرند و نام های متفاوتی را برای مدل ها، فایل ها و جدول پایگاه داده خود انتخاب کنند.

کنترل کننده یک جز سمت سرور Rails است که با تعیین اینکه کدام فایل مشاهده ارائه می شود، به درخواست های خارجی از وب سرور به برنامه پاسخ می دهد. همچنین ممکن است کنترل کننده مجبور شود یک یا چند مدل را برای کسب اطلاعات جستجو کند و آنها را به View منتقل کند. به عنوان مثال، در سیستم رزرواسیون هواپیمایی، کنترل کننده ای که عملکرد جستجوی پرواز را اجرا می کند، برای یافتن پروازهای منطبق با جستجو، باید مدلی را نشان دهد که پروازهای فردی را نشان می دهد و همچنین ممکن است برای یافتن داده های ثانویه مربوطه، نیاز به پرس و جو از مدل های نشان دهنده فرودگاه ها و خطوط هوایی باشد. سپس کنترل کننده می تواند زیرمجموعه ای از داده های پرواز را به نمای مربوطه منتقل کند، که حاوی مخلوطی از HTML ثابت و منطق است که با استفاده از داده های پرواز یک سند HTML حاوی یک جدول با یک ردیف در هر پرواز ایجاد می کند. یک کنترل کننده ممکن است یک یا چند عملکرد را ارائه دهد. در Ruby on Rails، یک عملکرد معمولاً یک واحد اساسی است که نحوه پاسخگویی به یک درخواست خاص مرورگر وب را توضیح می دهد. همچنین توجه داشته باشید که کنترل کننده / عملکرد فقط برای درخواست های وب خارجی درصورتی قابل دسترسی خواهد بود که مسیر مربوطه به آن نقشه برداری شده باشد. Rails توسعه دهندگان را به استفاده از مسیرهای RESTful تشویق می کند. این نگاشت ها از درخواست ها / مسیرهای ورودی به اقدامات کنترل کننده را می توان به راحتی در فایل پیکربندی route.rb تنظیم کرد.

نمای در پیکربندی پیش فرض Rails یک فایل erb است که در زمان اجرا ارزیابی و به HTML تبدیل می شود. متناوباً، از بسیاری از سیستم های الگوی دیگر می توان برای نمایش استفاده کرد. Ruby on Rails شامل ابزاری است که کارهای معمول توسعه را "خارج از فریمورک" آسان می کند و می تواند به طور خودکار برخی از مدل ها و نماهای مورد نیاز برای یک وب سایت اساسی را ایجاد کند. همچنین شامل WEBrick، ​​یک سرور وب ساده Ruby است که با Ruby توزیع می شود و Rake، یک سیستم ساخت، است که به عنوان یک روبی توزیع می شود. این ابزارها همراه با Ruby on Rails یک محیط توسعه اساسی را فراهم می کنند.

Ruby on Rails معمولاً مستقیماً به اینترنت متصل نیست، بلکه از طریق برخی از سرورهای فرانت اند انجام می شود. Ruby on Rails همچنین به دلیل استفاده گسترده از کتابخانه های JavaScript، Prototype و Script.aculo.us، برای اسکریپت نویسی اقدامات Ajax قابل توجه است. Ruby on Rails در ابتدا از SOAP سبک برای خدمات وب استفاده می کرد. بعداً با وب سرویس RESTful جایگزین شد. Ruby on Rails 3.0 از تکنیکی به نام Unobtrusive JavaScript برای تفکیک عملکرد (یا منطق) از ساختار صفحه وب استفاده می کند. jQuery به طور کامل به عنوان جایگزینی برای Prototype پشتیبانی می شود و کتابخانه پیش فرض جاوا اسکریپت در Rails 3.1 است، که نشان دهنده حرکت گسترده صنعت به سمت jQuery است. علاوه بر این، CoffeeScript در Rails 3.1 به عنوان زبان پیش فرض JavaScript معرفی شد.

از نسخه 2.0، Ruby on Rails هر دو HTML و XML را به عنوان قالب های خروجی استاندارد ارائه می دهد. مورد دوم تسهیلاتی برای خدمات وب RESTful است. Rails 3.1 Sass را به عنوان الگوی استاندارد CSS معرفی کرد. به طور پیش فرض، سرور با استفاده از فایل های دارای پسوند html.erb، از نمایشگرهای داخلی (Embedded Ruby) در نماهای HTML استفاده می کند. Rails از تعویض زبان های جایگزین الگو، مانند HAML و سبیل پشتیبانی می کند. Ruby on Rails 3.0 برای کار با Ruby 1.8.7، Ruby 1.9.2 و JRuby 1.5.2+ طراحی شده است. نسخه های قبلی پشتیبانی نمی شوند. Ruby on Rails 3.2 آخرین سری نسخه هایی است که از Ruby 1.8.7 پشتیبانی می کنند.

ساختار روبی آن ریلز

فلسفه روبی آن ریل شامل دو اصل اصلی است:

Don't Repeat Yourself: یک اصل توسعه نرم افزاری است که بیان می کند: "هر قطعه دانش باید یک واحد داشته باشد، غیر مبهم باشد و نمایش معتبر در سیستم داشته باشد." با نوشتن اطلاعات همانند بارها و بارها، کد ما بیشتر قابل نگهداری، قابل گسترش تر و کم حجمتر خواهد بود. برای رعایت این اصل معمولاً برنامه‌نویسان کد خود را داخل یک تابع یا کلاس قرار داده و در موارد مورد نیاز تابع را فراخوانی کرده یا یک شئ جدید از کلاس می‌سازند. بر طبق این اصل، هر برنامه‌نویس دقایقی پس از نوشتن چند خط اول، مراحل نگهداری یا پشتیبانی از کد خود را آغاز می‌کند. هنگامی که اصل DRY به طور موفقیت آمیز اجرا می شود، اصلاح هر عنصر سیستم نیازی به تغییر در دیگر عناصر منطقی نیست. علاوه بر این، عناصر منطقی همه تغییرات را به طور قابل پیش بینی و یکنواخت مرتبط می کند و و در نتیجه همگام سازی می شوند.

Convention Over Configuration:ریلز دارای عقایدی در مورد بهترین راه برای انجام بسیاری از کارها درتوسعه برنامه وب است و به این مجموعه عبارات پیش فرض می پردازد و نیازی نیست که از طریق فایل های پیکربندی بی پایان استفاده کنید. این اصطلاح اساسا به این معنی است که توسعه دهنده فقط باید جنبه های غیر متعارف برنامه را مشخص کند. برای مثال، اگر یک کلاس فروش در مدل وجود داشته باشد، جدول مربوطه در پایگاه داده به طور پیش فرض "فروش" نامیده می شود. تنها اگر یک نفر از این کنوانسیون، مانند جدول «فروش محصول»، انحراف پیدا کند، باید کد مربوط به این نامها را بنویسد. هنگامی که کنوانسیون اجرا شده توسط ابزار ها مطابق با رفتار مورد نظر است، انتظار می رود که بدون نیاز به نوشتن فایل های پیکربندی رفتار کند. تنها زمانی که رفتار مطلوب از کنوانسیون پیاده شده متفاوت است، پیکربندی صریح مورد نیاز است.

روبی آن ریلز به بسته های مختلفی تقسیم می شود که شامل:

  • ActiveRecord (سیستم نقشه برداری شی-ارتباطی برای دسترسی به پایگاه داده)
  • Active Resource (خدمات وب فراهم می کند)
  • Action Pack
  • Active Support
  • Action Mailer

ساختار دایرکتوری روبی آن ریلز:

App:برنامه های افزودنی برنامه را سازماندهی می کند و زیر شاخه های دایرکتوری نرم افزار، لایه های نمایش (views)، کنترل کننده (controller) و منطق کسب و کار (model) را نگه می دارد.

App/controllers: کنترل کننده ها یکی از زیر شاخه هایی هستند که به نظر می رسد درس های کنترل کننده ریلز را تعیین می کند. کنترل کننده یک درخواست وب را از کاربر می گیرد.

app/helpers: دایرکتوری فرعی بعدی به نام "helpers" برای کمک به درس مدل، مشاهده و کنترل استفاده می شود. این باعث می شود که مدل، نمایش و کد کنترل کننده کوچک، متمرکز و منظم حفظ شود.

app/models: زیر شاخه ی مدل ها دارای کلاس هایی است که اطلاعات ذخیره شده در پایگاه داده ی نرم افزار را مدل سازی و بسته بندی می کنند. در اغلب فریمورک ها، بخشی از ابزار می تواند منجر به توسعه کاملا شلوغ، خسته کننده و به سمت خطا باشد.

app/view: دایرکتوری است که الگوهای نمایش را برای پر کردن با آمار از برنامه ما، تبدیل به HTML، و بازگشت به مرورگر کلاینت، نگه می دارد.

App/view/layouts: دارای اسناد الگو برای طرح بندی است که با نمایش ها استفاده می شود. این مدل روش غیر معمول سربرگ/پاورقی نیست.

Components: این پوشه حاوی کامپوننت ها و برنامه های کوچک خود شامل مدل، نمایش و کنترل کننده می باشد.

Config:نوعی دایرکتوری است که شامل مقدار کوچکی از کد پیکربندی مورد نیاز برنامه شما مانند پیکربندی پایگاه داده (در database.Yml)، شکل محیط اطراف ریلز (environment.rb) و مسیریابی درخواست های ورودی وب (routes.Rb) می باشد.

Db: دایرکتوری است که در آن ریلز دارای اشیاء مدل است که به جداول پایگاه داده ارتباطی دسترسی دارند. پایگاه داده ارتباطی می تواند با اسکریپت های ایجاد شده مدیریت شود و سپس در این پوشه قرار گیرد.

RubyDoc :Doc یک شکل از فریمورک روبی آن ریلز است که می تواند مستندات روباتیک برای تولید کد ایجاد کند. این نوع فهرست شامل تمام مستندات نرم افزار تولید شده در RubyDoc است.

Lib: دایرکتوری است که در آن کتابخانه ها ذخیره می شوند، مگر اینکه به طور صریح به جای دیگری تعلق داشته باشند(مانند کتابخانه های vendor).

Log: لاگ مربوط به خطا در اینجا قرار دارد. روبی آن ریلز اسکریپت هایی را ایجاد می کند که به شما کمک می کند تا تعداد زیادی از لاگ ها را کنترل کنید. شما بایگانی جداگانه برای لاگ سرور (server.Log) و محیط اطراف ریلز (development.og، test.Log و production.log) را خواهید یافت.

Public: مانند فهرست کلی عمومی برای یک سرور اینترنتی، این فهرست دارای فایل های وب است که مبادله نمی شوند. این فهرست شامل اسناد جاوا اسکریپت (public / java scripts)، تصاویر (public / pics)، CSS ها (public / fashion sheets) و فایل های HTML است.

Script: این نوع فهرستی است که دارای اسکریپت هایی برای انتشار و دستکاری ابزارهای متعدد است که شما با ریلز از آن را استفاده می کنید. به عنوان مثال، اسکریپت هایی برای تولید کد و انتشار وب سرور وجود دارد.

Test:یک نوع دایرکتوری است که در آن تست ها نوشته شده اند.

Tmp: این نوع دایرکتوری توسط ریلز برای نگهداری فایل های موقت برای پردازش واسطه ای استفاده می شود.

Vendor: کتابخانه ها توسط Vendor که تحت شخص ثالث قرار میگیرند (شامل کتابخانه های حفاظتی یا سرویس های پایگاه داده فراتر از توزیع اولیه ریلز) ارائه می شوند.

ویژگی های روبی آن ریلز

برخی از ویژگی های روبی آن ریلز:

  • اجرای سریعتر به خاطر کاهش کدهای اضافی، طراحی ماژولار و قابلیت دسترسی به پلاگین های ایجاد شده
  • اعمال تغییرات راحت تر
  • صرفه جویی در هزینه و زمان
  • وجود اصل DRY
  • وجود اصل CoC
  • امکان کد نویسی مختصر قابلیت تهیه یک مرحله ای برنامه ها بر خلاف فریمورک های دیگر
  • انجام عملیات خودکار CRUD یا Delete،Create،Retrieve،Update ‌و نمایی از پایگاه داده

مثال های روبی آن ریلز

برای ایجاد یک فرم در این الگو، از یک سازنده فرم استفاده خواهید کرد. سازنده اولیه فرم برای Rails توسط یک روش کمکی به نام form_with ارائه شده است. برای استفاده از این روش، این کد را در برنامه / views / articles / new.html.erb اضافه کنید:

<%= form_with scope: :article, local: true do |form| %>
  <p>
    <%= form.label :title %><br>
    <%= form.text_field :title %>
  </p>
 
  <p>
    <%= form.label :text %><br>
    <%= form.text_area :text %>
  </p>
 
  <p>
    <%= form.submit %>
  </p>
<% end %>

اضافه کردن "hello, world" به کنترل کننده برنامه.

app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "hello, world!"
  end
end
نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود