Ruby on Rails — RoR)-фреймворк, написаний на мові програмування Ruby, реалізує архітектурний шаблон Model-View-Controller для веб-додатків, а також забезпечує їх інтеграцію з веб-сервером і сервером баз даних. Є відкритим програмним забезпеченням і поширюється під ліцензією MIT.
Створений Давидом Хейнемейером Ханссоном на основі його роботи в компанії 37signals над засобом управління проектами Basecamp і випущений в липні 2004 року. 23 грудня 2008 року команда проекту Merb об’єдналася з командою Rails з метою створення наступної версії Rails 3, яка об’єднає в собі кращі риси обох фреймворків.
Базується на наступних принципах розробки додатків:
максимальне використання механізмів повторного використання, що дозволяють мінімізувати дублювання коду в додатках (принцип Don’t repeat yourself);
за замовчуванням використовуються угоди по конфігурації, типові для більшості додатків — принцип Convention over configuration) – явна специфікація конфігурації потрібно тільки в нестандартних випадках.
Архітектура
Схематичне представлення архітектури модель-представлення-контролер з додатковими компонентами
Основними компонентами додатків на Ruby on Rails є модель (англ. model), представлення (англ. view) і контролер (англ. controller). Ruby on Rails використовує rest-стиль побудови веб-додатків.
Модель надає іншим компонентам програми об’єктно-орієнтоване відображення даних (таких як каталог Продуктів або список замовлень). Об’єкти моделі можуть здійснювати завантаження і збереження даних в реляційній базі даних, а також реалізують бізнес-логіку.
Для зберігання об’єктів моделі в реляційній СУБД за замовчуванням в Rails 3 використана бібліотека ActiveRecord. Конкуруючий аналог-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[4]. Відкриті методи контролера є так званими діями (англ. actions). Дії часто відповідає окремому поданню. Наприклад, за запитом користувача admin / index буде викликаний метод index класу AdminController і потім використано представлення index.html.erb з каталогу views / admin.