Ruby on Rails
Ruby on Rails | |
---|---|
Тип | Фреймворк для разработки веб приложений |
Автор | Давид Хейнемейер Ханссон |
Разработчик | Rails Core Team |
Написана на | Ruby |
Операционная система | Кроссплатформенное программное обеспечение |
Первый выпуск | 13 декабря 2005 |
Последняя версия | 2.3.5 (30 ноября 2009) |
Тестовая версия | 3.0 Beta[1] (5 февраля 2010) |
Репозиторий | github.com/rails/rails |
Лицензия | Лицензия MIT |
Сайт | rubyonrails.org |
Медиафайлы на Викискладе |
Ruby on Rails — программный каркас, написанный на языке программирования Ruby. Ruby on Rails предоставляет архитектурный образец Model-View-Controller (модель-представление-контроллер) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных.
Предоставляет однородную среду для разработки динамических AJAX-интерфейсов, с обработкой запросов и выдачи данных в контроллерах, отражения предметной области в базе данных.
Ruby on Rails является открытым программным обеспечением и распространяется под лицензией MIT.
Принципы
Ruby on Rails определяет следующие принципы разработки приложений:
- Ruby on Rails предоставляет механизмы повторного использования, позволяющие минимизировать дублирование кода в приложениях (принцип Don’t Repeat Yourself).
- По умолчанию используются соглашения по конфигурации, типичные для большинства приложений (принцип Convention over configuration). Явная спецификация конфигурации требуется только в нестандартных случаях.
История
Ruby on Rails был создан Дэвидом Хейнемеером Ханссоном на основе его работы над средством управления проектами Basecamp[2] и выпущен в июле 2004 года. Последней версией является 2.3.5, выпущенная 30 ноября 2009 года.
23 декабря 2008 года команда проекта Merb объединилась с командой Rails с целью создания следующей версии Rails 3, которая объединит в себе лучшие черты обоих фреймворков. Новая версия планируется к выпуску в 2010 году.[3][4].
Архитектура
Основными компонентами приложений Ruby on Rails являются модель (model), представление (view) и контроллер (controller).
Модель
Модель предоставляет остальным компонентам приложения объектно-ориентированное представление данных (таких как каталог продуктов или список заказов). Объекты модели осуществляют загрузку и сохранение данных в реляционной базе данных, а также реализуют бизнес-логику.
Благодаря возможностям динамической типизации в языке Ruby разработчику достаточно наследовать свой класс модели от базового класса ActiveRecord::Base
. Ruby on Rails автоматически связывает классы модели с таблицами в базе данных и создает атрибуты объектов для соответствующих полей таблицы.
Представление
Представление создает пользовательский интерфейс для отображения полученных от контроллера данных. Представление также передает запросы пользователя на манипуляцию данными в контроллер (как правило, представление не изменяет непосредственно модель).
В Ruby on Rails представление описывается при помощи шаблонов RHTML.Они представляют собой файлы HTML с дополнительными включениями фрагментов кода Ruby (Embedded Ruby или ERb). Вывод, сгенерированный встроенным кодом Ruby, включается в текст шаблона, после чего получившаяся страница HTML возвращается пользователю. Представления могут использовать фрагменты других представлений и, в свою очередь, быть включенными в шаблон (layout) более высокого уровня.
Контроллер
Контроллер — основной компонент, отвечающий за взаимодействие с пользователем. Контроллер считывает необходимые данные из модели и подготавливает их для отображения, а также сохраняет полученные от отображения данные в модели.
Контроллером в Ruby on Rails является класс, наследованный от ActionController::Base
. Открытые методы контроллера являются так называемыми действиями (actions). Action часто соответствует отдельному представлению. Например, по запросу пользователя admin/list
будет вызван метод list
класса AdminController
и затем использовано представление list.html.erb
.
Интеграция
Ruby on Rails может работать с Apache, Lighttpd или любым другим веб-сервером, поддерживающим FastCGI. Для разработки и отладки часто используется встроенный в Ruby веб-сервер WEBrick или Mongrel[5]. С помощью плагина в Rails реализована поддержка сетевого протокола WebDAV.[6]
В качестве сервера базы данных поддерживаются MySQL, Firebird, PostgreSQL, IBM DB2, Oracle и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite.
Для Windows существует дистрибутив Instant Rails c настроенной и готовой к работе сразу после установки рабочей средой для разработки Rails-приложений, которая включает в себя сервер Apache и СУБД MySQL. Для платформ Windows, Linux, Mac OS X имеется комплексный установщик BitNami RubyStack[7], включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion.
Помимо этого сайты BitNami.org и JumpBox.com[8] бесплатно предлагают образы VMware с готовой Linux-средой для развертывания RoR-приложений. Эти образы можно подключить к своему серверу виртуальных машин или развернуть на предлагаемом облачном хостинге.
Для разработки Ajax-приложений RoR поставляется с интегрированными JavaScript-библиотеками Prototype и Script.aculo.us, но также можно использовать и jQuery[9].
JBoss предлагает открытую платформу Torquebox[10] для развертывания Rails-приложений, плюс предлагающую функции планировщика задач, очереди сообщений, SOAP и даже управление SIP-сессиями.
Плагины
- ActiveScaffold — популярная альтернатива стандартному «scaffold», с использованием Ajax.[11]
- CommunityEngine — плагин-шаблон для быстрого создания полноценной социальной сети.[12]
IDE
- NetBeans IDE
- Aptana RadRails
- CodeGear 3rdRail
- IntelliJ IDEA (с использованием Ruby plug-in)
- Ruby in Steel (для Visual Studio) — версия 1.2 включает возможность визуального drag’n’drop проектирования UI, транслируя .erb-код в HTML и обратно.
- Flux 1.2 для пользователей Mac OS имеет поддержку Rails.
- RubyMine — среда разработки, оптимизированная для Rails-разработчиков.
- Eclipse
Сайты на Rails
Популярные сайты на Rails
Примечания
- ↑ http://weblog.rubyonrails.org/2010/2/5/rails-3-0-beta-release
- ↑ http://www.basecamphq.com
- ↑ http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3/ Merb gets merged into Rails 3!
- ↑ http://yehudakatz.com/2008/12/23/rails-and-merb-merge/ Rails and Merb Merge
- ↑ http://mongrel.rubyforge.org/
- ↑ http://wiki.rubyonrails.org/rails/pages/WebDAV
- ↑ http://bitnami.org/stack/rubystack
- ↑ http://www.jumpbox.com/app/rubyonrails
- ↑ http://github.com/aaronchi/jrails
- ↑ http://torquebox.org/
- ↑ http://activescaffold.com/
- ↑ http://communityengine.org/
См. также
Литература
- Тейт Б., Хиббс К. Ruby on Rails. Быстрая веб-разработка. — СПб.: BHV-Петербург, 2008. — 224 с.
- Хэнссон Д. Х., Томас Д. Гибкая разработка веб-приложений в среде Rails. — СПб.: «Питер», 2008. — 720 с.
- Фоулер Ч. Rails. Сборник рецептов. — СПб.: «Питер», 2007. — 256 с.
Ссылки
- Сайт проекта Ruby on Rails (англ.)
- Русскоязычный сайт Ruby on Rails
- Журнал о Ruby на русском языке
- Ruby и его оболочка (Computerworld)
- Пересекая границы: В чем секрет Ruby on Rails?
- Ruby on Rails: Интернет встает на рельсы (Мир ПК)
- Начало работы с Ruby on Rails (от установки ruby, до hello world)
- Новые рельсы Linux (Linux Format)
- База данных плагинов для Ruby on Rails (англ.)
Веб-сервисы
- IBM Sharable Code — онлайн сервис для создания Web 2.0 приложений и Web API «mashups» на основе Ruby on Rails
- Heroku — онлайн IDE для создания и редактирования проектов Ruby on Rails. Для размещения приложений использует не традиционный хостинг, а распределенную среду Amazon Elastic Compute Cloud (Amazon EC2).
- Engine Yard — глобальный специализирующийся на Ruby on Rails хостинг-провайдер