Interested Article - Ruby on Rails
- 2021-10-20
- 1
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
. Открытые методы контроллера являются так называемыми действиями (
англ.
actions
). Действия часто соответствует отдельному представлению. Например, по запросу пользователя
admin/index
будет вызван метод
index
класса
AdminController
и затем использовано представление
index.html.erb
из каталога
views/admin
.
Интеграция
Предпочтительным методом интеграции с веб-серверами является проксирование — использование веб-сервера в качестве прокси-сервера перед сервером приложения. Особняком стоят модули Phusion Passenger для интеграции с серверами Apache и nginx .
Ruby on Rails использует интерфейс , что позволяет использовать менее распространённые механизмы (FCGI, CGI, SCGI). Ruby on Rails может работать с Apache, Lighttpd или любым другим веб-сервером, поддерживающим FastCGI . Для разработки и отладки используется веб-сервер Puma (ранее WEBrick , встроенный в Ruby, или Mongrel). В качестве сервера базы данных поддерживаются MySQL , PostgreSQL , Firebird , DB2 , Oracle и Microsoft SQL Server . Также поддерживается встраиваемая база данных SQLite .
Для Windows существует дистрибутив Instant Rails с настроенной и готовой к работе сразу после установки рабочей средой для разработки Rails-приложений, которая включает в себя сервер Apache и СУБД MySQL, а также дистрибутив RubyInstaller, включающий последние версии Ruby и инструменты разработчика. Для платформ Windows, Linux , macOS имеется комплексный установщик BitNami RubyStack , включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems , Ruby on Rails, MySQL, Apache, Mongrel и Subversion.
Помимо этого сайты BitNami.org и JumpBox.com бесплатно предлагают образы VMware с готовой Linux-средой для развертывания RoR-приложений. Эти образы можно подключить к своему серверу виртуальных машин или развернуть в предлагаемой облачной среде .
Для разработки AJAX -приложений в RoR (до версии 5.1) по умолчанию использовался javascript-фреймворк jQuery , однако вместо него можно использовать и другие библиотеки. В ранних версиях Ruby on Rails (до 3.1), js-фреймворком по умолчанию был Prototype .
Подключаемые библиотеки
В качестве репозитория плагинов Ruby on Rails использует экосистему пакетов RubyGems , которые также называются «джемы» ( gem с англ. — «самоцвет»). Некоторые плагины со временем были включены в базовую поставку Rails, например Sass и CoffeeScript ; другие же, хотя и не были включены в базовую поставку, являются стандартом де-факто для большинства разработчиков (например, средство модульного тестирования RSpec).
Начиная с 3-й версии Rails наблюдается тенденция вынесения части функциональных возможностей в отдельные «джемы», отчасти из-за их более быстрого развития, чем самого Rails, отчасти для облегчения фреймворка.
Некоторые джемы:
- Devise (для аутентификации )
- CanCanCan (для авторизации )
- Pundit (для авторизации , пришел на смену CanCanCan, как модернизированная альтернатива)
- Kaminari , Will paginate , Pagy (для разделения записей, извлекаемых из базы данных, или элементов массива по страницам)
- Faker (для случайной генерации тестовых наборов данных в веб-приложениях)
- Friendly_id (позволяет создавать человекопонятные веб-адреса )
- Active Admin (для создания панелей администрирования)
- CommunityEngine (для создания социальных сетей ).
Средства разработки и тестирования
Для создания приложений на Ruby on Rails используются различные текстовые редакторы и IDE , в том числе:
- JetBrains RubyMine
- Sublime Text
- Visual Studio Code (с плагином для поддержки Ruby)
- Aptana Studio
- Ruby in Steel (для Visual Studio ) — версия 1.2 включает возможность визуального WYSIWYG -проектирования графического интерфейса, транслируя .erb-код в HTML и обратно.
- 1.2 для пользователей Mac OS имеет поддержку Rails.
- Textmate
- Emacs
- Vim
- Atom
Среди инструментов тестирования приложений, поддерживающих Ruby on Rails:
- RSpec — DSL для написания юнит- и интеграционных тестов ;
- Cucumber — инструмент для разработки с помощью BDD, позволяет писать тесты на обычном языке.
Использование
Ruby on Rails существенно использовался при создании таких популярных сайтов, как Netflix , Bloomberg , Zendesk , Твиттер , SoundCloud , Airbnb , Diaspora , Groupon , Basecamp , GitHub , Hulu , Scribd , Kickstarter , Change.org , Bleacher Report , , ASKfm , Upwork , Mastodon , Genius и других.
Примечания
- — 2024.
- — 2006.
- : [ 19.02.2019 ]. — Ruby on Rails. — Дата обращения: 19.02.2019.
- . Дата обращения: 22 февраля 2008. 20 февраля 2008 года.
- 2 января 2010 года.
- от 28 мая 2009 на Wayback Machine // A Social Networking Plugin for Ruby on Rails
- : [ 19.02.2019 ]. — Microsoft. — Дата обращения: 19.02.2019.
- ↑ : [ 19.02.2019 ]. — Engine Yard, 2018. — 11 April. — Дата обращения: 19.02.2019.
- Kelli Smith. : [ 19.02.2019 ]. — Skill Crush, 2018. — 29 April. — Дата обращения: 19.02.2019.
Литература
- Тейт Б., Хиббс К. Ruby on Rails. Быстрая веб-разработка. — СПб. : BHV-Петербург, 2008. — 224 с.
- Хэнссон Д. Х., Томас Д. Гибкая разработка веб-приложений в среде Rails. — СПб. : Питер , 2008. — 720 с.
- Фоулер Ч. Rails. Сборник рецептов. — СПб. : Питер , 2007. — 256 с.
- Фернандес О. Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails. — Символ-Плюс, 2008. — 768 с.
- Руби С., Томас Д., Хэнссон Д. Х. Гибкая разработка веб-приложений в среде Rails. — 4-е изд. — Питер, 2012. — 464 с.
- Hartl M. . — 3rd edition. — Addison-Wesley, 2015. — 664 с. — (Professional Ruby Series). — ISBN 0134077709 .
Ссылки
-
(англ.)
- (англ.)
- на сайте GitHub
- 2021-10-20
- 1