УДК 681.3.06

Сергеева Ю. В.

Национальный горный университет, Украина

Фреймворк Ruby on Rails как веб-ориентированная среда разработки

Разработка web-приложений требуют внимательного изучения существующих сегодня концепций по решению поставленных задач. Неотъемлемой частью успешного проекта, является анализ уже существующих подходов, построение новых и выбор оптимального решения. Немаловажную роль при создании web-приложений является выбор фреймворка. Ruby on Rails является одной из тех сред разработки, которую стали выбирать для создания широкого круга так называемых приложений web2.0.

Ruby on Rails (RoR или просто Rails)— это мощный программный каркас для разработки обслуживания и развертывания Web-приложений, имеющий возможности интеграции с Web-сервером и сервером базы данных. Данный фреймворк представляет собой архитектурный образец Model-View-Controller(модель-представление-контроллер). Динамичный AJAX-интерфейс, обработка запросов и выдача данных в контроллерах, предметная область, отраженная в базе данных, — для всего этого Rails предоставляет однородную среду разработки на языке Ruby.

Ruby—интерпретируемый язык высокого уровня, поддерживающий различные парадигмы программирования, прежде всего объектную. В 1995 году японский разработчик свободного программного обеспечения Юкихиро Мацумото придумал свой собственный язык программирования Ruby и написал для него интерпретатор. Данный язык программирования обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора», а также многими другими возможностями.  По особенностям синтаксиса Ruby близок к языкам Perl и Eiffel, некоторый черты языка взяты из Python. По объектно-ориентированному подходу он близок к Smalltalk.

Фреймворк Ruby on Rails был разработан Давидом Хайнмайером Ханссоном. Первая версия Rails появилась в июле 2004 года. Rails является открытым программным обеспечением, это и обусловило его быстрое распространение и постоянное совершенствование.

Web-серверы

Ruby on Rails может работать с любыми серверами, поддерживающими технологию FastCGI, например, Apache, Lighttpd, SCGI. Во время разработки, чаще всего самым простым способом является использование WEBrick — Web-сервера, который поставляется вместе с Ruby.

Базы данных

В качестве сервера базы данных Ruby on Rails поддерживает MySQL, Firebird, PostgreSQL, IBM DB2, Oracle,  Microsoft SQL Server, встраиваемую, базу данных SQLite.

Архитектура Model-View-Controller

Пример классической модели архитектуры MVC (Model-View-Controller или Модель-Представление-Контроллер ) приведен на рис1.

Рис. 1. Классическая модель трехзвенной архитектуры MVC(модель-представление-контроллер)

Эта архитектура характеризуется тремя основными элементами:

1. Модель(Model)—ядро приложения. Модель ответственна за управление состоянием приложения.  Логика приложения в модели выполняет две важных задачи: возвращает информацию о состоянии приложения,  и изменяет состояние приложения.

2. Представление(View)—средство отображения информации, полученных данных о модели и ее состоянии.

3. Контроллер(Controller)—интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Архитектура приложений Ruby on Rails

Rails состоит из двух логических компонентовActiveRecord и ActionPack, первый реализует уровень представления данных т.е. модель, а ActionPack объединяет в себе два других уровня архитектуры MVC—контроллер и представление. Упрощённо архитектуру MVC в Ruby on Rails в целом можно представить следующим образом, рис.2.

Рис.2. Архитектура MVC в Ruby on Rails

ActiveRecord обеспечивает возможность представления базы данных в виде объектов. При этом создается модель предметной области, в которой объединяются сами данные, а также способы управления ими. Следуя стандартам ORM–модели(Object-relational mapping или Объектно-реляционная проекция), таблица представляется классом, строки таблицы объектами, поля — атрибутами объекта. Благодаря возможностям динамической типизации в языке Ruby разработчику достаточно наследовать свой класс модели от базового класса ActiveRecord::Base.

ActionPack содержит две части: ApplicationController, отвечающий за реализацию бизнес-логики, и ActionView—механизм представлений. ActionController—это менеджер котроллеров в Rails-приложении. Он управляет прикладной логикой программы, действуя как связующее звено между данными, презентационным слоем и Web-браузером. Контроллером в Ruby on Rails является класс, наследованный от ActionController::Base. Открытые методы контроллера являются так называемыми действиями.

Action Controller  отвечает за ряд  задач:

         1. Решение о том, как необходимо обрабатывать конкретный запрос.

         2. Выборка данных из модели для передачи представлению.

         3. Получение информации из пользовательского запроса и использование ее для создания или изменения данных в модели.

ActionView(Представления)

 В Rails представление обрабатывает все, что отправляется браузеру. Представления — это шаблоны страниц, использующие RHTML (HTML со встроенным Ruby) или RXML (XML, сгенерированный с помощью Ruby). Action View управляет отрисовкой вложенных и частичных шаблонов и включает в себя поддержку AJAX.

Ruby on Rails определяет следующие принципы разработки приложений:

         1. Ruby on Rails предоставляет механизмы повторного использования, позволяющие минимизировать дублирование кода в приложениях (принцип Don’t Repeat Yourself).

         2. По умолчанию используются соглашения по конфигурации, типичные для большинства приложений (принцип Convention over configuration). Явная спецификация конфигурации требуется только в нестандартных случаях.

Don’t Repeat Yourself(DRY)

 Когда  необходимое изменить поведение приложения, построенного на этом принципе DRY,  нет необходимости править код приложения более чем в одном месте. Например, вместо копирования и вставки кода с похожей либо идентичной функциональностью, приложение разрабатывается таким образом, что эта функциональность сохраняется один раз, в одном месте, а затем на нее делаются ссылки из тех мест приложения, где она нужна. Также примером поддержки в Ruby on Rails принципа DRY может служить то, что в отличие от Java, в Rails нет  необходимости повторять в приложении схему определение схемы базы данных. Для Rails база данных является надежным источником информации об источнике данных, и Rails самостоятельно запрашивает у базы данных информацию, которая может понадобиться для обеспечения корректной работы с данными. Принципа DRY поддерживается и, когда дело касается реализации технологи, типа Ajax (Asynchronous JavaScript and XML). Ajax—реализует подход, который позволяет Web-приложению заменять содержание в браузере пользователя динамически, или обмениваться данными формы с сервером, не перезагружая страницу. При создании Ajax-приложений разработчикам часто приходится дублировать код, так как сайт должен функционировать  в браузерах, которые не поддерживают Ajax, так же, как в тех, которые данную технологию поддерживают. При этом код, необходимый для вывода результатов в обоих типах браузерах, в основном, идентичен. Фреймворк Rails облегчают работу с разными поколениями браузеров без дублирования кода.

Соглашение по конфигурации(Convention over Configuration)

Концепция "соглашения по конфигурации" относится к тому, что Rails предлагает набор установок по умолчанию для способа построения типичного Web-приложения. Одни соглашения относятся к  архитектуре приложения, другие представляют собой соглашения о назначении имен. Используемые библиотеки или отдельные файлы Ruby загружаются автоматически, не требуя ни одной строчки кода, если они находятся в правильном месте.  Конфигурационная информация обычно сохраняется в  XML-файлах (eXtensible Markup Language), и эти файлы могут стать большими и сложными в поддержке. Во многих случаях приходится пройти длинный процесс конфигурирования, прежде чем  приступать к созданию хотя бы простейшего приложения. Вместо трудоемкого XML, приложение на Rails использует несколько простых соглашений, которые позволяют узнать всё через рефлекцию и обнаружение. Например, Rails использует рефлекцию для привязки таблиц базы данных к объектам Ruby.

 Ruby on Rails предоставляет ряд полезных возможностей, некоторые из них будут перечислены ниже.

Схема миграций(Schema Migration)

В Rails существует возможность внесения изменений в структуру баз данных при помощи, так называемых миграций. Кроме того, миграции позволяют вернуть структуру базы данных к предыдущей версии.

Инструмент сборки Rake

Rake — инструмент для автоматизации сборки программного кода. В нем имеется библиотека основных заданий, например, таких как, функции для задач манипулирования файлами и библиотека для удаления скомпилированных файлов. 

Поддержка автоматизированного тестирования

Ruby on Rails позволяет писать автоматизированные тесты для вашего приложения, при этом стараясь реализовать это как можно проще. Rails включает библиотеки для поддержки функционального,  блочного, интеграционного и нагрузочного тестирования.

Настраиваемые (чистые) URL

Rails четко отделяет URL от имен файлов, названий методов и прочих сугубо внутренних деталей вашего приложения. URL в Rails простые и понятные, а не длинные и зашифрованные.

Фреймворк Ruby on Rails можно рассматривать как самостоятельную платформу с полным набором необходимых модулей, документацией, готовыми решениями и качественной средой разработки. При помощи Ruby on Rails можно создавать web-приложения различного направления и сложности. В ряде случаев его использование является приемлемым и оптимальным для решения поставленных задач.

 

Список литературы

 

1.     Томас Д., Хэнссон Д.Х. Гибкая разработка веб-приложений в среде Rails: Пер. с англ.: СПб Питер, 2008- 716с.

2.     Фултон Х. Программирование на языке Ruby: ДМК Пресс, 2007-688с.

3.      Брюс А., Тейт, Курт Ниббс, Ruby on Rails. Быстрая разработка: БХВ-Петербург, 2008- 224с.

4.     Фернандес О., Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails: Пер. с англ. СПб Символ-Плюс, 2008- 768с.

5.     Интернет ресурс: http://ruby.inuse.ru*