Ruby on Rails

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

Ruby on Rails є відкритим програмним забезпеченням і розповсюджується під ліцензією MIT.


1. Принципи

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

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

2. Історія

Ruby on Rails був створений Давидом Хейнемейером Ханссоном на основі його роботи в компанії 37signals над засобом управління проектами Basecamp [1] і випущений в липні 2004.

25 травня 2010 випущена версія 2.3.8.

23 грудня 2008 команда проекту Merb об'єдналася з командою Rails з метою створення наступної версії Rails 3, яка об'єднає в собі кращі риси обох фреймворків. [2] [3]

29 серпня 2010 року вийшов Rails 3.0. [4]

31 серпня 2011 вийшов Rails 3.1. [5]

20 січня 2012 вийшов Rails 3.2. [6]


3. Архітектура

Детальніше по цій темі див: Model-View-Controller.
Схематичне уявлення архітектури модель-подання-контролер

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


3.1. Модель

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

Для зберігання об'єктів моделі в реляційної СУБД за замовчуванням в Rails 3 використана бібліотека ActiveRecord. Конкуруючий аналог - DataMapper.

3.2. Подання

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

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


3.3. Контролер

Контролер в Rails - це набір логіки, що запускається після отримання HTTP-запиту сервером. Контролер відповідає за виклик методів моделі і запускає формування уявлення.

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


4. Інтеграція

Найкращим методом інтеграції з веб-серверами є проксірованіе - використання веб-сервера в якості проксі-сервера перед сервером додатка. Окремо стоять модулі Phusion Passenger для інтеграції із серверами Apache і nginx.

Ruby on Rails використовує інтерфейс RACK, що дозволяє використовувати менш поширені механізми (FCGI, CGI, SCGI). Ruby on Rails може працювати з Apache, Lighttpd або будь-яким іншим веб-сервером, що підтримує FastCGI. Для розробки та налагодження часто використовується веб-сервер WEBrick, вбудований в Ruby, або Mongrel. [7] В якості сервера бази даних підтримуються MySQL, Firebird, PostgreSQL, DB2, Oracle і Microsoft SQL Server. Також підтримується вбудована база даних SQLite.

Для Windows існує дистрибутив Instant Rails C налаштованої та готової до роботи відразу після установки робочим середовищем для розробки Rails-додатків, яка включає в себе сервер Apache і СУБД MySQL. Для платформ Windows, Linux, Mac OS X є комплексний установник BitNami RubyStack [8], що включає в себе все необхідне для розробки в середовищі Rails, включаючи Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel і Subversion.

Крім цього сайти BitNami.org і JumpBox.com [9] безкоштовно пропонують образи VMware з готовою Linux-середовищем для розгортання RoR-додатків. Ці образи можна підключити до свого сервера віртуальних машин або розгорнути в пропонованій хмарної середовищі.

Для розробки AJAX -додатків в RoR за замовчуванням використовується javascript-фреймворк jQuery, однак замість нього можна використовувати й інші бібліотеки. У ранніх версіях Ruby on Rails (до 3.1), js-фреймворком за замовчуванням був Prototype.


5. Реалізації

JBoss пропонує відкриту платформу Torquebox [10] для розгортання Rails-додатків, що пропонує функції планувальника завдань, черги повідомлень, SOAP і навіть управління SIP -сесіями.

6. Плагіни

  • ActiveScaffold - популярна альтернатива стандартному "scaffold", з використанням AJAX. [11]
  • CommunityEngine - плагін-шаблон для швидкого створення повноцінної соціальної мережі. [12]

7. Редактори і IDE


8. Сайти на Rails

Популярні сайти на Rails:

Примітки

  1. Project management software, online collaboration: Basecamp - www.basecamphq.com
  2. Riding Rails: Merb gets merged into Rails 3! - weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3 /
  3. http://yehudakatz.com/2008/12/23/rails-and-merb-merge/ - yehudakatz.com/2008/12/23/rails-and-merb-merge /
  4. Rails 3.0: It's ready! - weblog.rubyonrails.org/2010/8/29/rails-3-0-it-s-done
  5. Rails 3.1.0 has been released! - weblog.rubyonrails.org/2011/8/31/rails-3-1-0-has-been-released
  6. Rails 3.2.0 has been released! -
  7. fauna's mongrel at master - GitHub - mongrel.rubyforge.org /
  8. BitNami :: RubyStack - bitnami.org / stack / rubystack
  9. JumpBox for Ruby on Rails Deployment | JumpBox Virtual Appliances and Applications for Cloud Computing - www.jumpbox.com / app / rubyonrails
  10. TorqueBox: Home - torquebox.org /
  11. ActiveScaffold :: A Ruby on Rails plugin for dynamic, AJAX CRUD interfaces - activescaffold.com /
  12. Community Engine | A Social Networking Plugin for Ruby on Rails - communityengine.org /

Література

  • Тейт Б., Хіббс К. Ruby on Rails. Швидка веб-розробка. - СПб. : BHV-Петербург, 2008. - 224 с.
  • Хенссон Д. Х., Томас Д. Гнучка розробка веб-додатків в середовищі Rails. - СПб. : Пітер, 2008. - 720 с.
  • Фоулер Ч. Rails. Збірник рецептів. - СПб. : Пітер, 2007. - 256 с.
  • Фернандес О. Шлях Rails. Детальний посібник зі створення додатків в середовищі Ruby on Rails. - Символ-Плюс, 2008. - 768 с.
  • Рубі С., Томас Д., Хенссон Д. Х. Гнучка розробка веб-додатків в середовищі Rails. - 4-е вид. - Пітер, 2012. - 464 с.