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

روبی آن ریلز

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

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

روبی آن ریلز یا ریلز، یک فریمورک توسعه برنامه کاربردی وب در سمت سرور است که با زبان روبی تحت مجوز 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

 

آیا این نوشته را دوست داشتید؟
packtpub-professional-ruby-on-rails-developer-with-rails-5-video

آموزش پیشرفته روبی آن ریلز (Ruby on Rails) با Rails 5


این دوره به شما می آموزد که برنامه های تحت وب را با Ruby on Rails طراحی و ایجاد کرده و به سهولت برنامه های تحت وب با ویژگی های بلادرنگ، مانند اتاق های...

1397/12/27 1834 بازدید
teamtreehouse-active-record-associations-in-rails-course

آموزش Active Record Associations در Rails 


بسیاری از مدل های Rails شما به نحوی به مدل های دیگر متصل می شوند. نویسنده دارای مقالات بسیاری است و هر مقاله متعلق به یک نویسنده است. دکتر دارای بیمار...

1397/09/09 631 بازدید
teamtreehouse-creating-static-pages-in-rails

آموزش ساخت صفحات استاتیک در Rails


در این کارگاه ما یاد خواهیم گرفت که چگونه صفحات استاتیک در اپلیکیشن های Ruby on Rails ایجاد کنیم....

1397/07/20 554 بازدید
teamtreehouse-ruby-on-rails-scaffolding

آموزش Ruby on Rails Scaffolding


Scaffolding در اپلیکیشن Rails منابعی را برای کار با اپلیکیشن ها فراهم می کند. Scaffolding شروع خوبی برای اپلیکیشن است اما به معنای جایگزینی در طول زما...

1397/07/20 669 بازدید
teamtreehouse-build-a-rails-api-course

آموزش ساخت Rails API


یک قطعه رایج و مشترک در اپلیکیشن های وب، داشتن یک API یا رابط برنامه نویسی اپلیکیشن است که به اپلیکیشن های دیگر اجازه می دهد تا با اپلیکیشن ارتباط برق...

1397/05/28 719 بازدید
teamtreehouse-behavior-driven-development-with-cucumber

آموزش توسعه رفتار محور با Cucumber


Cucumber یک فریمورک توسعه مبتنی بر رفتار (BDD) است که به شما اجازه می دهد تا مشخصات خود را در انگلیسی ساده بنویسید، به تمام ذینفعان یک پروژه اجازه می ...

1397/05/27 1029 بازدید
teamtreehouse-upgrading-a-ruby-on-rails-application

آموزش ارتقای اپلیکیشن Ruby on Rails


در این کارگاه با ارتقاء اپلیکیشن Ruby on Rails از Rails نسخه 4.0 به 4.1 آشنا می شوید. Ruby on Rails، یا Rails، یک فریمورک وب کاربردی در سمت سرور است ک...

1397/05/09 650 بازدید
teamtreehouse-practice-ruby-on-rails-basics-course

تمرین مبانی Ruby on Rails


در این دوره با ایجاد، دستکاری و خروجی متغیرهای رشته در PHP آشنا شوید. روبی یک زبان برنامه نویسی پویا، مفسر، واکنش گرا، شی گرا و همه منظوره است. &nbs...

1397/05/04 755 بازدید
teamtreehouse-install-rails-in-production

آموزش نصب و راه اندازی Rails


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

1397/05/04 645 بازدید
teamtreehouse-deployment-with-capistrano-course

آموزش استقرار با Capistrano 


استقرار یک اپلیکیشن وب در یک سرور تولید شامل مراحلی است که هر بار یک نسخه جدید را منتشر می کنید نیاز به تکرار دارید، مانند تغییرات از Git و راه اندازی...

1397/05/02 691 بازدید
teamtreehouse-ruby-on-rails-5-basics-course

آموزش مبانی Ruby on Rails 5


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

1397/04/31 818 بازدید
teamtreehouse-rails-servers-with-unicorn-and-nginx

آموزش سرورهای Rails با Unicorn و Nginx


در این کارگاه ما قصد داریم به شما نشان دهیم چگونه یک "reverse proxy" (پروکسی معکوس) را بین اپلیکیشن Rails و اینترنت  راه اندازی کنید. ما قصد داریم از ...

1397/04/31 797 بازدید
teamtreehouse-user-authentication-with-rails-course

آموزش احراز هویت کاربر با Rails 


یکی از بخش های رایج در اپلیکیشن های وب داشتن حساب کاربری است.  در این دوره، ما قصد داریم حساب های کاربری را به TODO اپلیکیشن لیست todo اضافه کنیم. همچ...

1397/04/30 495 بازدید
teamtreehouse-installing-a-ruby-on-rails-development-environment-in-windows

آموزش نصب محیط توسعه Ruby on Rails در ویندوز 


Ruby on Rails، یا Rails، یک فریمورک اپلیکیشن وب در سمت سرور است که در Ruby تحت مجوز MIT نوشته شده است. در این کارگاه با نصب محیط توسعه Ruby on Rails ...

1397/04/21 649 بازدید
teamtreehouse-installing-a-ruby-on-rails-development-environment-in-ubuntu

آموزش نصب محیط توسعه Ruby on Rails در Ubuntu 


در این کارگاه با نصب و اجرا در دسکتاپ اوبونتو آشنا می شوید. Ruby on Rails، یا Rails، یک فریمورک وب کاربردی در سمت سرور است که در Ruby تحت مجوز MIT نوش...

1397/04/19 924 بازدید
teamtreehouse-installing-a-ruby-on-rails-development-environment-in-os-x

آموزش نصب محیط توسعه Ruby on Rails در OS X


در این کارگاه با نصب مدرن Ruby on Rails در Mac OS X آشنا می شوید. Ruby on Rails، یا Rails، یک فریمورک وب کاربردی در سمت سرور است که در Ruby تحت مجوز M...

1397/04/19 552 بازدید
teamtreehouse-installing-a-rails-5-development-environment-on-windows

آموزش نصب محیط توسعه Rails 5 در ویندوز


در این کارگاه با نصب محیط توسعه Rails 5 در ویندوز آشنا می شوید. Ruby on Rails، یا Rails، یک فریمورک وب کاربردی در سمت سرور است که در Ruby تحت مجوز MIT...

1397/04/19 462 بازدید
teamtreehouse-installing-a-rails-5-development-environment-on-mac

آموزش نصب محیط توسعه Rails 5 در مک


در این کارگاه با راه اندازی Mac برای توسعه Rails 5 آشنا می شوید. Rails 5 یک نسخه جدید از Ruby On Rails است، این بدان معنا است که Rails API  و الزامات ...

1397/04/19 501 بازدید
teamtreehouse-installing-a-rails-5-development-environment-on-linux

آموزش نصب محیط توسعه Rails 5 در لینوکس


در این کارگاه با نصب محیط توسعه Rails 5 در لینوکس آشنا می شوید. Rails 5 یک نسخه جدید از Ruby On Rails است، این بدان معنا است که Rails API  و الزامات م...

1397/04/19 596 بازدید
teamtreehouse-troubleshooting-a-rails-application

آموزش عیب یابی اپلیکیشن Rails 


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

1397/04/19 466 بازدید