**Ruby on Rails** ( *RoR* ) чаҳорчӯбаест, ки бо забони барномасозии Ruby навишта шудааст, ки намунаи меъмории Model-View-Controller-ро барои барномаҳои веб амалӣ мекунад ва инчунин ҳамгироии онҳоро бо сервери веб ва сервери пойгоҳи додаҳо таъмин мекунад. Он нармафзори кушодаасос буда, таҳти иҷозатномаи MIT паҳн шудааст.

Аз ҷониби Дэвид Ҳайнемайер Ҳанссон дар асоси кори худ дар 37signals дар асбоби идоракунии лоиҳа Basecamp сохта шудааст ва моҳи июли соли 2004 бароварда шудааст. 23 декабри соли 2008, дастаи лоиҳаи Merb бо дастаи Rails муттаҳид шуд, то версияи навбатии Rails 3-ро эҷод кунад, ки беҳтарин хусусиятҳои ҳарду чаҳорчӯбро муттаҳид мекунад.

Дар асоси принсипҳои зерини таҳияи барномаҳо:

* истифодаи максималии механизмҳои истифодаи такрорӣ барои кам кардани такрори код дар барномаҳо ( Принсипи худро такрор накунед );
* Бо нобаёнӣ, конвенсияҳои конфигуратсия, ки барои аксари барномаҳо хосанд, истифода мешаванд ( Конвенсия бар принсипи конфигуратсия ) - мушаххасоти конфигуратсия танҳо дар ҳолатҳои ғайристандартӣ талаб карда мешавад.

Архитектура
-----------

 Намоиши схемавии меъмории модел-намоиш-назорат бо ҷузъҳои иловагӣ
Ҷузъҳои асосии барномаҳои Ruby on Rails модели (англ. model ), дидан (англ. view ) ва контроллер (англ. controller ). Ruby on Rails услуби REST барои сохтани барномаҳои вебро истифода мебарад.

Модел қисми боқимондаи барномаро бо намоиши ба объект нигаронидашудаи маълумот (ба монанди каталоги маҳсулот ё рӯйхати фармоиш) таъмин мекунад. Объектҳои намунавӣ метавонанд маълумотро дар пойгоҳи додаҳои релятсионӣ бор ва захира кунанд ва инчунин мантиқи тиҷоратиро амалӣ кунанд.

Барои нигоҳ доштани объектҳои моделӣ дар DBMS релятсионӣ, китобхонаи ActiveRecord ба таври нобаёнӣ дар Rails 3 истифода мешавад. Аналоги рақобаткунанда DataMapper мебошад. Плагинҳо барои кор бо пойгоҳи додаҳои ғайрирасмӣ мавҷуданд, ба монанди Mongoid барои кор бо MongoDB .

Намоиш интерфейси корбарро бо истифода аз маълумоти аз контроллер гирифташуда эҷод мекунад. Намоиш инчунин дархостҳои корбаронро барои коркарди додаҳо ба контроллер интиқол медиҳад (умуман, намоиш моделро мустақиман тағир намедиҳад).

Дар Ruby on Rails намоиш бо истифода аз қолабҳои ERB — файлҳои HTML бо иловаҳои иловагии пораҳои рамзи Ruby (Embedded Ruby ё ERb) тавсиф карда мешавад. Натиҷаи тавлидшуда бо рамзи Ruby дарунсохт ба матни шаблон дохил карда мешавад ва саҳифаи HTML дар натиҷа ба корбар баргардонида мешавад. Илова ба ERB, имкон дорад, ки тақрибан 20 муҳаррики шаблон, аз ҷумла Haml истифода шаванд.

Контроллер дар Rails маҷмӯи мантиқест, ки пас аз гирифтани дархости HTTP кор мекунад. Назоратчӣ барои даъват кардани усулҳои модел ва тавлиди намоиш масъул аст.

Мутобиқати байни суроғаи интернет ва амали контроллер (маршрут) дар файли `config/routes.rb` муайян карда шудааст.

Контроллер дар Ruby on Rails синфест, ки аз `ActionController::Base` барои барномаҳои мизи корӣ ва `ActionController::API` барои API мерос мегирад. Усулҳои ҷамъиятии контроллер амалҳо номида мешаванд (англ. actions ). Амалҳо аксар вақт ба назари алоҳида мувофиқат мекунанд. Масалан, дархост аз корбар `admin/index` ба усули `index` синфи `AdminController` занг мезанад ва сипас намуди `index.html.erb` аз директорияи `views/admin` истифода мешавад.

Интегратсия
-----------

Усули афзалиятнок барои ҳамгироӣ бо серверҳои веб ин прокси-сервер мебошад - бо истифода аз сервери веб ҳамчун прокси сервери барнома. Модулҳои Phusion Passenger барои ҳамгироӣ бо серверҳои Apache ва nginx фарқ мекунанд.

Ruby on Rails интерфейси Rack-ро истифода мебарад, ки имкон медиҳад механизмҳои камтар маъмул (FCGI, CGI, SCGI) истифода шавад. Ruby on Rails метавонад бо Apache, Lighttpd ё ягон сервери дигари веб, ки FastCGI -ро дастгирӣ мекунад, кор кунад. Барои таҳия ва ислоҳ, веб-сервери Puma (қаблан WEBrick, ки дар Ruby ё Mongrel сохта шудааст) истифода мешавад. MySQL, PostgreSQL, Firebird, DB2, Oracle ва Microsoft SQL Server ҳамчун сервери пойгоҳи додаҳо дастгирӣ карда мешаванд. Як пойгоҳи додаи SQLite низ дастгирӣ карда мешавад.

Барои Windows, тақсимоти Instant Rails бо муҳити кории танзимшуда ва барои истифода омода барои таҳияи барномаҳои Rails фавран пас аз насб мавҷуд аст, ки сервери Apache ва DBMS MySQL, инчунин тақсимоти RubyInstaller, ки версияҳои охирини Асбобҳои Ruby ва таҳиякунанда. Барои платформаҳои Windows, Linux, macOS як насбкунандаи мукаммали BitNami RubyStack  мавҷуд аст, ки ҳама чизеро, ки шумо дар муҳити Rails таҳия кардан лозим аст, дар бар мегирад, аз ҷумла Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel ва Subversion.

Илова бар ин, сайтҳои BitNami.org ва JumpBox.com  тасвирҳои ройгони VMware- ро бо муҳити омодаи Linux барои ҷойгиркунии замимаҳои RoR пешниҳод мекунанд. Ин тасвирҳо метавонанд ба сервери мошини виртуалии шумо замима карда шаванд ё дар муҳити абрии пешниҳодшуда ҷойгир карда шаванд.

Барои таҳияи барномаҳои AJAX дар RoR (то версияи 5.1), чаҳорчӯбаи javascript jQuery ба таври нобаёнӣ истифода мешуд, аммо ба ҷои он китобхонаҳои дигарро метавон истифода бурд. Дар версияҳои аввали Ruby on Rails (пеш аз 3.1), чаҳорчӯбаи пешфарз js Prototype буд.

Китобхонаҳои алоқаманд
----------------------

Ruby on Rails экосистемаи бастаҳои RubyGems-ро, ки онро *gem* аз англ. — «самоцвет» низ меноманд, ҳамчун анбори плагинҳо истифода мебарад. ) Баъзе плагинҳо бо гузашти вақт ба тақсимоти асосии Rails дохил карда шуданд, ба монанди Sass ва CoffeeScript ; дигарон, гарчанде ки ба тақсимоти асосӣ дохил карда нашудаанд, стандарти воқеии барои аксари таҳиягарон мебошанд (масалан, воситаи санҷиши воҳиди RSpec).

Аз версияи 3-и Rails, тамоюли кӯчонидани баъзе функсияҳо ба "мураббиҳои ҷудогона" вуҷуд дошт, ки қисман аз сабаби рушди зудтари онҳо нисбат ба худи Rails, қисман сабуктар кардани чаҳорчӯба.

* *Таҳия* (барои аутентификатсия )
* *CanCanCan* (барои иҷозат )
* Pundit (барои иҷозат, иваз кардани CanCanCan ҳамчун алтернативаи муосир)
* *Каминарӣ*, *Саҳифабандӣ мекунад*, *Паги* (барои саҳифабандии сабтҳое, ки аз пойгоҳи додаҳо ё элементҳои массив гирифта шудаанд)
* *Faker* (барои ба таври тасодуфӣ тавлид кардани маҷмӯи маълумотҳои санҷишӣ дар барномаҳои веб)
* *Friendly\_id* (ба шумо имкон медиҳад, ки суроғаҳои интернетии ба одамон хондашаванда эҷод кунед)
* *Admin Active* (барои сохтани панелҳои маъмурӣ)
* *CommunityEngine*  (барои эҷоди шабакаҳои иҷтимоӣ ).

Воситаҳои таҳия ва озмоиш
-------------------------

Барои эҷоди замимаҳои Ruby on Rails муҳаррирони матнӣ ва IDE-ҳои гуногун истифода мешаванд, аз ҷумла:

* JetBrains RubyMine
* Матни олӣ
* Visual Studio Code (бо плагини дастгирии Ruby)
* Студияи Aptana
* CodeGear 3rdRail
* Ruby in Steel (барои Visual Studio ) - версияи 1.2 дорои қобилияти ба таври визуалӣ тарҳрезии интерфейси графикии WYSIWYG, тарҷумаи рамзи .erb ба HTML ва баръакс мебошад.
* Flux 1.2 барои корбарони Mac OS дорои дастгирии Rails мебошад.
* Матн
* Emacs
* Вим
* Атом

Воситаҳои санҷиши барномаҳое, ки Ruby on Rails-ро дастгирӣ мекунанд, инҳоянд:

* RSpec - DSL барои воҳиди хаттӣ ва санҷишҳои ҳамгироӣ ;
* Бодиринг як воситаи таҳияи BDD мебошад, ки ба шумо имкон медиҳад, ки санҷишҳоро бо забони муқаррарӣ нависед.

Истифода
--------

Ruby on Rails дар эҷоди сайтҳои машҳур ба монанди Netflix , Bloomberg, Zendesk , Twitter, SoundCloud, Airbnb, Diaspora, Groupon, Basecamp, GitHub, Hulu, Scribd, Kickstarter, Change.org ба таври назаррас истифода шудааст. Bleacher Report , SlideShare, ASKfm, Upwork, Mastodon, Genius ва дигарон.

Қайдҳо
------

1. ↑  BitNami :: RubyStack(пайванди дастнорас — *таърих*). 22 феврали 2008 санҷида шуд. Баргирифта аз сарчашмаи аввал 20 феврали 2008.
2. ↑  JumpBox for Ruby on Rails Deployment | JumpBox Virtual Appliances and Applications for Cloud Computing Бойгонӣ шудааст 2 январи 2010  сол.
3. ↑  Community Engine Нусхаи бойгонишуда аз 28 май 2009 дар Wayback Machine // A Social Networking Plugin for Ruby on Rails
4. ↑

Адабиёт
-------

* *Тейт Б. Хиббс К.* Ruby on Rails. Быстрая веб-разработка. — СПб.: BHV-Петербург, 2008. — 224 с.
* *Хэнссон Д. Х. Томас Д.* Гибкая разработка веб-приложений в среде Rails. — СПб.: Питер, 2008. — 720 с.
* *Фоулер Ч.* Rails. Сборник рецептов. — СПб.: Питер, 2007. — 256 с.
* *Фернандес О.* Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails. — Символ-Плюс, 2008. — 768 с.
* *Руби С. Томас Д. Хэнссон Д. Х.* Гибкая разработка веб-приложений в среде Rails. — 4-е изд. — Питер, 2012. — 464 с.
* *Hartl M.* Ruby on Rails Tutorial. — 3rd edition. — Addison-Wesley, 2015. — 664 с. — (Professional Ruby Series). — ISBN 0134077709.

* Сомонаи расмӣ(англ.)
	+ Роҳнамо(англ.)
* Проект Ruby on Rails
* Рельсҳо: Роҳнамои услуб
* Убури марзҳо: Сирри Ruby on Rails дар чист?
* Ҳуҷҷатҳои Ruby on Rails бо забони русӣ
* Беҳтарин ганҷҳои Ruby ва Ruby on Rails