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 являются модель (), представление () и контроллер (). 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. Открытые методы контроллера являются так называемыми действиями (). Действия часто соответствует отдельному представлению. Например, по запросу пользователя 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. Для разработки и отладки используется веб-сервер 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.comJumpBox for Ruby on Rails Deployment | JumpBox Virtual Appliances and Applications for Cloud Computing бесплатно предлагают образы VMware с готовой Linux-средой для развертывания RoR-приложений. Эти образы можно подключить к своему серверу виртуальных машин или развернуть в предлагаемой облачной среде.
Для разработки AJAX-приложений в RoR (до версии 5.1) по умолчанию использовался javascript-фреймворк jQuery, однако вместо него можно использовать и другие библиотеки. В ранних версиях Ruby on Rails (до 3.1), js-фреймворком по умолчанию был Prototype.
Подключаемые библиотеки В качестве репозитория плагинов Ruby on Rails использует экосистему пакетов RubyGems, которые также называются «джемы» (). Некоторые плагины со временем были включены в базовую поставку Rails, например Sass и CoffeeScript; другие же, хотя и не были включены в базовую поставку, являются стандартом де-факто для большинства разработчиков (например, средство модульного тестирования RSpec).
Начиная с 3-й версии Rails наблюдается тенденция вынесения части функциональных возможностей в отдельные «джемы», отчасти из-за их более быстрого развития, чем самого Rails, отчасти для облегчения фреймворка.
Некоторые джемы: Devise (для аутентификации) CanCanCan (для авторизации) Pundit (для авторизации, пришел на смену CanCanCan, как модернизированная альтернатива) Kaminari, Will paginate, Pagy (для разделения записей, извлекаемых из базы данных, или элементов массива по страницам) Faker (для случайной генерации тестовых наборов данных в веб-приложениях) Friendly_id (позволяет создавать человекопонятные веб-адреса) Active Admin (для создания панелей администрирования) CommunityEngineCommunity Engine // A Social Networking Plugin for Ruby on Rails (для создания социальных сетей).
Средства разработки и тестирования Для создания приложений на Ruby on Rails используются различные текстовые редакторы и IDE, в том числе:
JetBrains RubyMine Sublime Text Visual Studio Code (с плагином для поддержки Ruby) Aptana Studio CodeGear 3rdRail Ruby in Steel (для Visual Studio) — версия 1.2 включает возможность визуального WYSIWYG-проектирования графического интерфейса, транслируя .erb-код в HTML и обратно. Flux 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, SlideShare, ASKfm, Upwork, Mastodon, Genius и других.
История + История версий Версия Дата выпуска Совместимые версии Ruby "Rails 1.0: Party like it's one oh oh!" . weblog.rubyonrails.org. Retrieved 9 June 2010. 1.8.6 "Rails 1.2: REST admiration, HTTP lovefest, and UTF-8 celebrations" . weblog.rubyonrails.org. Retrieved 9 June 2010. 1.8.6 "Rails 2.0: It's done!" . weblog.rubyonrails.org. Retrieved 9 June 2010. 1.8.6 Rails 2.1: Time zones, dirty, caching, gem dependencies, caching, etc . weblog.rubyonrails.org. Retrieved 9 June 2010. 1.8.6 "Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs" . weblog.rubyonrails.org. Retrieved 9 June 2010. рекомендуется 1.8.7; возможна 1.8.6 "Rails 2.3: Templates, Engines, Rack, Metal, much more!" . weblog.rubyonrails.org. Retrieved 9 June 2010. рекомендуется 1.8.7; возможны 1.8.6 и 1.9.1 "Rails 3.0: It's ready!" . weblog.rubyonrails.org. Retrieved 30 August 2010. рекомендуется 1.9.3; возможны 1.8.7 и 1.9.2 рекомендуется 1.9.3; возможны 1.8.7 и 1.9.2 рекомендуется 1.9.3; возможны 1.8.7 и 1.9.2 Предпочтительно 2.0; требуется 1.9.3 или более поздняя Предпочтительно 2.0; требуется 1.9.3 или более поздняя Предпочтительно 2.0; требуется 1.9.3 или более поздняя 2.2.2 или более поздняя 2.2.2 или более поздняя 2.2.2 или более поздняя 2.5.0 или более поздняя 2.5.0 или более поздняя 2.7.0 или более поздняя 2.7.0 или более поздняя 10 августа 2024 3.1.0 или более поздняя 7 ноября 2024 3.2.0 или более поздняя 24 октября 2025 3.2.0 или более поздняя
Примечания
Литература
Ссылки Официальный сайт Руководства
Rails: руководство по стилю оформления
Категория:Веб-фреймворки Категория:Программное обеспечение с лицензией MIT Категория:Свободное программное обеспечение, написанное на Ruby Категория:Свободные библиотеки программ