آموزش روبی آن ریلز (Ruby On Rails)

دسته بندی: آموزش روبی (Ruby)

روبی آن ریلز

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

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

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

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

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

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

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 که تحت شخص ثالث قرار میگیرند (شامل کتابخانه های حفاظتی یا سرویس های پایگاه داده فراتر از توزیع اولیه ریلز) ارائه می شوند.

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

روبی آن ریلز شامل ابزاری است که کارهای تکراری و مشترک توسعهٔ نرم‌افزار را بسیار ساده می‌کند، ابزاری مانند داربست، تعدادی از مدل‌ها و نماها را به صورت خودکار که برای هر وب‌سایت نیاز است را می‌سازد. همچنین شامل یک وب سرور ساده (WEBRick) و یک ابزار ساخت سیستم (Rake) است. ریلز و این ابزار، با یکدیگر یک محیط توسعه پایه‌ای را فراهم می‌کنند.

برنامه‌های روبی آن ریلز برای اجرا شدن نیاز به یک وب سرور دارند. شما می‌توانید علاوه بر WEBRick از وب سرورهای دیگری مانند Lighttpd, Apache Nginx و انواع دیگر از وب سرورها استفاده کنید. یکی از ویژگی‌های با ارزش ریلز استفاده از کتابخانه‌های بزرگ جاوااسکریپت، Prototype و script.aculo.us برای Ajax است. در ابتدا ریلز از پروتکل دسترسی آسان به اشیاء برای دسترسی به خدمات وب استفاده می‌کرد، اما بعد آن جایگزین خدمات وب RESTful شد. از نسخه ۲ روبی آن ریلز به صورت پیش‌فرض خروجی‌های HTML و XML را ارائه می‌دهد. دومی، ابزاری برای خدمات وب RESTful است.

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

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

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

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

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

روبی آن ریلز یک فریمورک توسعه وب محبوب است. برای ساخت وب سایت ها و برنامه های کاربردی مانند توییتر، Groupon، Shopify و بسیاری دیگر استفاده می شود. از دیگر وب سایت ها و برنامه هایی که از روبی آن ریلز استفاده کرده اند می توان به موارد زیر اشاره کرد:

  • Airbnb
  • Kickstarter
  • Basecamp
  • CafePress
  • CrunchBase
  • Fab
  • Dribbble
  • Funnyordie
  • Github
  • Soundcloud
  • Hulu
  • Apartable
  • SendGrid
  • Square
  • Urban
  • Dictionary
  • Whitepages
  • Zendesk

برای ایجاد یک فرم در این الگو، از یک سازنده فرم استفاده خواهید کرد. سازنده اولیه فرم برای 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 %>

اگر اکنون صفحه را تازه کرده اید، همان فرم را از مثال ما در بالا ببینید. ساخت اشکال در Rails واقعا آسان است!

اضافه کردن یک عمل "سلام" به کنترل کننده برنامه.

app/controllers/application_controller.rb

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

def hello render html: "hello, world!" end end

 

آیا این نوشته را دوست داشتید؟