Ruby on Rails

Ruby on Rails
Тип програмний каркас вебзастосунків
Автор David Heinemeier Hansson
Розробник Rails Core Team
Операційна система крос-платформовий
Мова програмування Ruby
Стан розробки активний
Ліцензія MIT
Репозиторій github.com/rails/rails
Вебсайт rubyonrails.org

Ruby on Rails — об'єктно-орієнтований програмний каркас (фреймворк) для створення вебзастосунків, написаний на мові програмування Ruby. Ruby on Rails надає каркас модель-вид-контролер (Model-View-Controller) для вебзастосунків, а також забезпечує їхню інтеграцію з вебсервером і сервером бази даних.

Ruby on Rails був створений Девідом Гайнемаєр Генссоном (англ. David Heinemeier Hansson) на основі його роботи над засобом керування проектами Basecamp і був випущений в липні 2004 року. Ruby on Rails є відкритим програмним забезпеченням і розповсюджується за ліцензією MIT.

Принципи

Ruby on Rails визначає принципи розробки застосунків:

  • Застосунки не повинні визначати власну архітектуру, оскільки вони використовують готовий каркас модель-вид-контролер.
  • Мова Ruby дозволяє використовувати нотацію, що легко читається, для визначення семантики вебзастосунків (таких як відносини між таблицями в базі даних).
  • Ruby on Rails надає механізми повторного використання, що дозволяють мінімізувати дублювання коду у вебзастосунку (принцип Don't Repeat Yourself — не повторюй себе).
  • За замовчуванням використовуються угоди по конфігурації, типові для більшості вебзастосунків (принцип Convention over configuration — угоди над конфігурацією). Явна специфікація конфігурації потрібна тільки в нестандартних випадках.

Архітектура

Основними компонентами застосунків Ruby on Rails є модель (model), вид (view) і контролер (controller).

Модель

Модель надає решті компонентів програми об'єктно-орієнтоване представлення даних (таких як каталог продуктів або список замовлень). Об'єкти моделі здійснюють завантаження і збереження даних в реляційній базі даних.

Завдяки можливостям динамічної типізації в мові Ruby розробникові досить успадкувати свій клас моделі від базового класу ActiveRecord::Base. Ruby on Rails автоматично пов'язує класи моделі з таблицями в базі даних і створює атрибути об'єктів для відповідних полів таблиці.

Вид

Вид створює інтерфейс користувача для відображення отриманих від контролера даних. Вид також передає запити користувача на маніпуляцію даними в контролер (як правило, вид не змінює безпосередньо дані з моделі).

У Ruby on Rails вид описується за допомогою шаблонів RHTML. Вони є файлами HTML з додатковими включеннями фрагментів коду Ruby (Embedded Ruby або ERb). Вивід, згенерований вбудованим кодом Ruby, включається в текст шаблону сторінки HTML, яка після цього повертається користувачеві. Види можуть використовувати фрагменти інших видів і, у свою чергу, бути включеними в шаблон (layout) вищого рівня.

Контролер

Контролер — основний компонент, що відповідає за взаємодію з користувачем. Контролер прочитує необхідні дані з моделі і готує їх для відображення, а також зберігає отримані від відображення дані в моделі.

Контролером в Ruby on Rails є клас, успадкований від ActionController::Base. Відкриті методи контролера є так званими діями (actions). Action часто відповідає окремому видові. Наприклад, по запиту користувача admin/list буде викликаний метод list класу AdminController і потім використаний вид list.rhtml.

Інтеграція

Ruby on Rails може працювати з Apache, Lighttpd або будь-яким іншим вебсервером, що підтримує FastCGI. Для розробки і зневадження часто використовується вбудований в Ruby вебсервер WEBrick або Mongrel

Як сервер бази даних підтримуються MySQL, Firebird, PostgreSQL, IBM DB2, Oracle і Microsoft SQL Server. Також підтримується вбудована база даних SQLite.

Проекти написані на RoR

Виноски

Посилання

  • Сайт проекту Ruby On Rails (англ.)
  • п
  • о
  • р
Реалізації
Активні
Неактивні
IDE
Додатки
Бібліотеки та каркаси
  • Adhearsion
  • Camping
  • eRuby (RHTML)
  • Merb
  • Padrino
  • RubyCocoa
  • Ruby on Rails
  • Shoes
  • Sinatra
  • QtRuby
Серверне ПЗ
  • mod_ruby
  • Mongrel
  • Phusion Passenger (mod_rails/mod_rack)
  • Rack
  • WEBrick
Люди
Пов'язані статті
  • Document format
  • why's (poignant) Guide to Ruby
  • Ruby Central
  • RubyKaigi
  • RubyForge
  • Ліцензія Ruby
  • Сторінка Вікісховища Commons
    • п
    • о
    • р
    Каркаси вебзастосунків (веб-фреймворки)
    ASP.NET
    ASP.NET MVC Framework · BFC · DotNetNuke · MonoRail · Umbraco
    ColdFusion
    ColdSpring · Fusebox · Mach-II · Model-Glue · onTap
    Common Lisp
    ABCL-web · blow · BKNR · SymbolicWeb · UnCommon Web
    Erlang
    BeepBeep · Chicago Boss · Erlang Web · ErlyWeb · Inets · Misultin · Mochiweb · Nitrogen · WebMachine · Yaws
    Flex
    Cairngorm
    Java
    Apache Cocoon · Apache Struts · Apache Tapestry · AppFuse · Aranea framework · Click Framework · Cooee framework · Flexive · Google Web Toolkit · Grails · Hamlets · IT Mill Toolkit · ItsNat · JavaServer Faces · JBoss Seam · Makumba · Mentawai · Oracle ADF · OpenLaszlo · OpenXava · Play Framework · Reasonable Server Faces · Restlet · RIFE · Shale Framework · SmartClient · Spring Framework · Stripes · ThinWire · WebObjects · WebWork · Apache Wicket · XTT Framework · ZK Framework
    Клієнтські для JavaScript
    ASP.NET AJAX · AJILE · Clean AJAX · Backbone.js · Dojo toolkit · Echo JS · Ext JS · jQuery · KnockoutJS · MochiKit · Meteor · MooTools · OpenLink AJAX Toolkit · Prototype · React · qooxdoo · Rialto Toolkit · Rico · script.aculo.us · SmartClient · Spry framework · WinJS · Underscore.js · Yahoo! UI Library
    Perl
    Catalyst[en] · Interchange · Maypole framework · Mason · Mojolicious
    PHP
    Akelos PHP Framework · CakePHP · Chisimba · CodeIgniter · Drupal · DokuWiki · eZ Publish · FUSE · Horde · Joomla! · Kohana · MODX · Phalcon · PHP For Applications · PHPOpenbiz · PRADO · Qcodo · Seagull PHP Framework · Simplicity PHP framework · Laravel · SilverStripe · Symfony · VirtueMart · Zend Framework · Zoop Framework · Yii
    Python
    CherryPy · Django · Flask · Karrigell · Nevow · Porcupine · Pylons · Spyce · TurboGears · TwistedWeb · web.py · web2py · Webware · Zope
    Ruby
    Camping · Nitro · IOWA · Ramaze · Cerise · Merb · Ruby on Rails
    Scala
    Lift · Play Framework · Scalatra
    Серверні для JavaScript
    AppJet · firecat · Helma Object Publisher · Node.js
    Lua
    Dart
    Інші
    Alpha Five · Fusebox (ColdFusion і PHP) · OpenACS (Tcl) · Seaside (Smalltalk) · HAppS (Haskell)·