Ruby on Rails

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Ruby on Rails
Ruby on Rails logo.svg
Тип

фреймворк

Автор

Ханссон, Давид Хейнемейер

Написана на

Ruby

Последняя версия

5.0.0.1 (11 августа 2016)[1]

Лицензия

Expat[d]

Сайт

rubyonrails.org

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. Открытые методы контроллера являются так называемыми действиями (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. Для разработки и отладки часто используется веб-сервер WEBrick, встроенный в Ruby, или Mongrel.[2] В качестве сервера базы данных поддерживаются MySQL, Firebird, PostgreSQL, DB2, Oracle и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite.

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

Помимо этого сайты BitNami.org и JumpBox.com[4] бесплатно предлагают образы VMware с готовой Linux-средой для развертывания RoR-приложений. Эти образы можно подключить к своему серверу виртуальных машин или развернуть в предлагаемой облачной среде.

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

Подключаемые библиотеки[править | править вики-текст]

Вокруг Rails сложилась большая экосистема плагинов, которые также называются «джемы» (gem с англ. — «самоцвет»). Для управлениями плагинами существует специальная система RubyGems. Некоторые из них со временем были включены в базовую поставку Rails, например Sass и CoffeeScript; другие же, хотя и не были включены в базовую поставку, являются стандартом де-факто для большинства разработчиков, например, средство модульного тестирования RSpec.

Начиная с 3-й версии Rails наблюдается тенденция вынесения части функциональных возможностей в отдельные «джемы», отчасти из-за их более быстрого развития, чем сам Rails, отчасти для облегчения фреймворка.

Некоторые джемы: Devise (для аутентификации), CanCan (для авторизации), Kaminari (для разделения записей, извлекаемых из базы данных, или элементов массива по страницам), Faker (для случайной генерации тестовых наборов данных в веб-приложениях), friendly_id (позволяет создавать человеко-понятные веб-адреса), Active Admin (для создания панелей администрирования), CommunityEngine[5] (для создания социальных сетей).

Средства разработки и тестирования[править | править вики-текст]

Для создания приложений на Ruby on Rails используются различные текстовые редакторы и IDE, в том числе:

Среди инструментов тестирования приложений, поддерживающих Ruby on Rails:

Использование[править | править вики-текст]

Ruby on Rails существенно использовался при создании таких популярных сайтов, как Твиттер, SoundCloud, Airbnb, Diaspora, Groupon, Basecamp, GitHub, Hulu, Scribd, Kickstarter, Change.org.

Примечания[править | править вики-текст]

Литература[править | править вики-текст]

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

Ссылки[править | править вики-текст]