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

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

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

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

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

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

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


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

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

آموزش Active Record Associations در Rails 


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

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

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


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

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

آموزش Ruby on Rails Scaffolding


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

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

آموزش ساخت Rails API


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

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

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


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

1397/05/27 1186 بازدید
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 721 بازدید
teamtreehouse-practice-ruby-on-rails-basics-course

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

1397/04/30 549 بازدید
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 738 بازدید
teamtreehouse-installing-a-ruby-on-rails-development-environment-in-ubuntu

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


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

1397/04/19 1033 بازدید
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 623 بازدید
teamtreehouse-installing-a-rails-5-development-environment-on-windows

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


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

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

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


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

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

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


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

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

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


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

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