Ruby on rails: фреймворк MVC для сложных веб-приложений

В 2004 году компания 37signals (известная сегодня как Basecamp) опубликовала приложение для управления проектами basecamp. Эта программа содержала такие функции, как списки дел, опции учета времени, а также системы обмена сообщениями. Одной из составляющих программы была базовая архитектура, которую разработал один из программистов продукта, Дэвид Хайнемайер Ханссон. В том же году эта базовая архитектура была извлечена и в 2005 году опубликована в виде собственной платформы веб-приложений с открытым исходным кодом. Название этого известного фреймворка, который был разработан, — Ruby: Ruby on Rails (RoR или просто «Rails» для краткости). Никто не мог предположить при его публикации, что в итоге это программное обеспечение станет одним из самых популярных решений для создания новых веб-приложений.

Что такое Ruby on Rails?

Ruby on Rails постоянно совершенствуется разработчиками с тех пор, как фреймворк впервые появился на свет под лицензией MIT. Все эти разработки оставались верны одному важному принципу, на котором был основан RoR: «Не повторяйся» (DYR). Каждый бит информации в проекте, основанном на фреймворке rails, должен присутствовать только один раз. Следуя этой концепции, достаточно только определить ячейки таблицы в базе данных, не записывая эту информацию в исходный код или в отдельный конфигурационный файл. Реализованный модуль active record считывает эту информацию непосредственно из базы данных.

Второй парадигмой проектирования, которой придерживается RoR, является «Конвенция вместо конфигурации». Фреймворк RoR представляет своим пользователям определенные соглашения, когда дело доходит до именования классов. Разработчики, следуя этим соглашениям, могут сэкономить огромное количество времени, когда дело доходит до конфигурации. Однако Ruby on Rails допускает и альтернативные конфигурации, что означает, что пользователи по-прежнему могут наслаждаться высоким уровнем гибкости при программировании своих веб-приложений.

Ruby: гибкий и платформонезависимый язык фреймворка Rails

В середине девяностых годов японский программист Юкихиро Мацумото опубликовал объектно-ориентированный язык Ruby. Сначала почти исключительно используемый в Японии, скриптовый язык с тех пор зарекомендовал себя как популярная альтернатива лидерам индустрии PHP, Python и т.д. Успех программы объясняется тем, что на этапах разработки Мацумото стремился к тому, чтобы программирование всегда оставалось увлекательным, поэтому он включил в Ruby лучшие аспекты других языков. Будучи интерпретируемым скриптовым языком, код выполняется интерпретатором, что означает небольшой недостаток по сравнению с компилируемыми скриптами; в то же время, однако, этот аспект делает Ruby более динамичным и гибким. Код Ruby не зависит от платформы благодаря тому, что существуют специальные интерпретаторы для всех обычных операционных систем.

Одной из основных характеристик Ruby является то, что он обладает метапарадигмой, свойством, которое также характеризует C++. Это означает, что программистам не нужно довольствоваться одной определенной парадигмой программирования. Благодаря «принципу наименьшего удивления», использование скриптового языка интуитивно понятно и, как правило, не сопровождается неожиданным поведением. Будучи программой с открытым исходным кодом, зарегистрированной под свободной лицензией BSD, Ruby поддерживается большим и активным сообществом, которое внесло свой вклад в создание многочисленных современных программных библиотек. Большинство этих библиотек подпадают под действие этой лицензии и играют важную роль при разработке современных веб-приложений. Установка библиотек может быть выполнена с помощью так называемых RubyGems Одним из таких Gems, к которым относятся публичные веб-интерфейсы Google и Facebook, является фреймворк Rails.

Архитектура модель-вид-контроллер (MVC)

Среда исполнения Ruby-on-Rails — это закрытая система. Они содержат интерпретатор, необходимые библиотеки программирования, а также соответствующие скрипты. Каждый проект Rails подчиняется автоматически создаваемой структуре каталогов, которая отделяет друг от друга скрипты, конфигурации, классы, содержимое и т.д. Благодаря структурному подходу такое веб-приложение легко поддерживать. Здесь используется термин архитектура «модель-вид-контроль». Слои этой архитектуры устроены следующим образом:

Модель

Как правило, рельсовые приложения связаны с реляционными базами данных. Для того чтобы общаться с соответствующей системой управления базой данных и производить и/или манипулировать записями, фреймворку Ruby нужны модели. Они изображают классы на таблицах базы данных и отдельные атрибуты на соответствующих столбцах. Этот слой моделей основан на ORM-фреймворке (объектно-реляционное отображение), Active Record. Начиная с Rails 3.0, пользователи получили доступ и к другим ORM-библиотекам, например, Sequel.

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

Слой представления, или презентационный слой, необходим для того, чтобы получить доступ к данным из слоя модели и отобразить их. Для этого в Ruby on Rails используется класс Action View, который поддерживает широкий спектр различных форматов вывода. Представления, отображаемые в виде HTML-документа, представляют соответствующие данные запрашивающим пользователям. Документы XML или JSON используются для предоставления доступа к записям базы данных другим программам или сервисам.

Контроллер

Контроллер представляет собой интерфейс между моделью и слоем представления. Он обрабатывает поступающие запросы через веб-браузеры и вызывает соответствующие модели из базы данных, которые отвечают за визуализацию. Являясь центральным органом управления Rails-приложением, контроллер также управляет кэшированием и объединяет различные запросы отдельных клиентов в сессию.

Стандартные компоненты фреймворков RoR

Как фреймворк для веб-приложений, стандартная версия Ruby on Rails предлагает все компоненты, необходимые разработчикам для программирования хорошо оснащенного приложения. Единственными дополнительными требованиями являются установка Ruby, базы данных SQL и менеджера пакетов RubyGmes. Для базы данных SQL команда Rails рекомендует библиотеку программирования SQLite с открытым исходным кодом на языке C, которая содержит реляционную систему баз данных. Вот стандартные модули фреймворка Ruby on Rails.

  • Action Controller: этот модуль позволяет создавать интерфейсы между записями базы данных и программами и доступом к пользователям.
  • Action View: Action View позволяет генерировать представления для отдельных записей и контроллеров. Что касается именования, существует соглашение, согласно которому все Представления должны быть названы в честь соответствующего контроллера.
  • Active Record: этот модуль включает в себя центральный модуль для манипулирования базой данных вашего Rails-приложения. Пользователям, желающим придерживаться соглашений относительно именования и типов, придется немного поработать над конфигурацией, чтобы генерировать отдельные модели с помощью этого модуля. Ruby on Rails является оптимальным инструментом для этого, предлагая мощную систему строительных лесов для создания интерфейсов для четырех компонентов CRUD, которые представляют базы данных на объектно-ориентированном уровне.
  • Active Resources: этот модуль реализует объектно-реляционное отображение для веб-сервисов REST. Как и Active Record, этот компонент также нацелен на сокращение количества конфигураций.
  • Action Mailer: Action Mailer позволяет отправлять и получать электронные письма в вашем веб-приложении и упрощает настройку регистрации электронной почты.
  • Active Support: Модуль активной поддержки содержит различные полезные классы вспомогательных программ и расширения стандартной библиотеки.
  • Railties: этот компонент помогает различным фреймворкам RoR работать вместе. Для этого каждый модуль имеет свой собственный railtie для запуска процесса установки или выполнения конфигурации фреймворка. Кроме того, рельсы необходимы для того, чтобы добавлять в Ruby on Rails специализированные модули.

Следующая шутка, переведенная из немецкой статьи на сайте wikibooks.org о RoR, подчеркивает важный момент, связанный с фреймворком:

  • Два разработчика беседуют о языках программирования. Первый программист: «Я работаю с Java и отдаю PHP своим детям, чтобы они играли с ним». На что второй программист отвечает: «Я играю со своими детьми и позволяю Ruby делать работу за меня!».

Хотя это, конечно, преувеличение, в шутке есть доля правды. Java считается отличным выбором для сложных решений и поэтому часто используется для фреймворков в различных профессиональных сферах. Однако программирование на этом платформонезависимом языке оказывается не таким уж простым и часто отнимает много времени. Будучи интерпретируемым скриптовым языком, Ruby также не привязан к какой-либо определенной платформе. В то же время кодирование с помощью Ruby происходит гораздо быстрее, и код, который изначально гораздо менее объемен, легко корректировать. Язык интерпретатора также приводит к тому, что скорость работы разрабатываемых приложений ниже, чем у аналогичных Java-приложений.

По сравнению с Java, PHP также имеет некоторые преимущества, когда речь идет о простоте. Недаром этот язык считается стандартным решением, когда речь идет о веб-разработке; он также лежит в основе различных систем управления контентом, таких как WordPress, TYPO3 или Joomla. Из-за того, что PHP был создан более или менее произвольным образом и не всегда был объектно-ориентированным, разработка обновлений для веб-приложений, которые были разработаны с использованием старой версии, иногда может быть довольно сложной задачей.

Ruby on Rails содержит интегрированный фреймворк, который позволяет программистам тестировать функциональность своих приложений в любое время. Благодаря этой функции ошибки могут быть пойманы и исправлены на ранней стадии. Технологии Web 2.0, такие как AJAX, можно использовать только с меньшим количеством строк. И Ruby, и фреймворк Rails отличаются большими и растущими сообществами, и оба предлагают впечатляющий набор расширений. Инновационная философия Rails, т.е. стремление предоставить разработчикам самый простой подход к кодированию, стала источником вдохновения для многих других новых фреймворков. Symfony, CakePHP и Zend Framework являются примерами таких подходов.

Для кого лучше всего подходит Ruby Framework?

Ruby on Rails предлагает все, что нужно разработчикам, создающим современные веб-приложения: отличные структуры для создания интерфейсов, возможность легко устанавливать соединения с базами данных SQL, а также возможность использовать веб-технологии, такие как AJAX. Четкие принципы «Не повторяйся» и «Конвенция над конфигурацией» создают основу для чистого и лаконичного кода, который легко пишется. Некоторые конфигурации могут быть достигнуты без каких-либо проблем, так как Ruby предоставляет программистам все свободы, которые им могут понадобиться. Это делает фреймворк подходящим как для новичков, так и для опытных программистов, которые до этого работали только со скриптовыми языками. 

Благодаря системе строительных лесов можно быстро создавать прототипы планируемых веб-проектов. А благодаря интегрированной тестовой среде программисты могут проверять свои приложения на наличие возможных ошибок еще на этапе разработки. Ruby on Rails также готов к работе с более сложными приложениями. С помощью расширений, RubyGems, программисты могут добавлять в свои проекты необходимые интерфейсы, библиотеки или оптические функции. Учитывая, что Ruby и фреймворк RoR подчиняются свободной лицензии BSD, использование некоторых из этих расширений может повлечь за собой новые расходы на хостинг вашего веб-проекта.

Несмотря на удобство использования, было бы ошибкой полагать, что для начала работы с фреймворком не нужны навыки программирования. В отличие от шутки выше, Ruby не способен освободить программистов от всей работы. Что касается скорости работы, то приложения RoR все еще не так быстры, как приложения конкурентов. Код впервые выполняется, когда пользователи обращаются к соответствующему контенту, поэтому обработка входящих запросов с точки зрения логистики занимает немного больше времени, чем при использовании предварительно скомпилированных строк кода.

Программистам придется отказаться от использования фреймворка Rails, если они хотят организовать свое приложение с помощью систем управления контентом, таких как Durpal, Joomla или WordPress. Как и многие другие платформы, все они основаны на PHP. Однако существует множество CMS-решений на основе Ruby on rails, например Alchemy CMS.

Трудно оценить популярность RoR и в полной мере оценить шансы фреймворка отобрать бразды правления у лидеров рынка PHP, Java и Python, но его преимущества и растущая популярность фреймворка Ruby говорят сами за себя.

Оцените статью
cdelat.ru
Добавить комментарий