Ruby on Rails
Материал из Википедии — свободной энциклопедии
Ruby on Rails | |
Страница по умолчанию
|
|
Тип | Фреймворк для разработки веб приложений |
Разработчик | Rails Core Team |
ОС | Кроссплатформенное программное обеспечение |
Лицензия | Лицензия MIT |
Сайт | rubyonrails.org |
Ruby on Rails — объектно-ориентированный программный каркас для создания веб-приложений, написанный на языке программирования Ruby. Ruby on Rails предоставляет каркас модель-представление-контроллер (Model-View-Controller) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных.
Предоставляет однородную среду для разработки динамических AJAX-интерфейсов, с обработкой запросов и выдачи данных в контроллерах, отражения предметной области в базе данных.
Ruby on Rails является открытым программным обеспечением и распространяется под лицензией MIT.
Содержание |
[править] Принципы
Ruby on Rails определяет следующие принципы разработки приложений:
- Приложения не должны определять собственную архитектуру, поскольку они используют готовый каркас модель-представление-контроллер.
- Язык Ruby позволяет использовать легко читаемую нотацию для определения семантики приложений (таких как отношения между таблицами в базе данных).
- Ruby on Rails предоставляет механизмы повторного использования, позволяющие минимизировать дублирование кода в приложениях (принцип Don’t Repeat Yourself).
- По умолчанию используются соглашения по конфигурации, типичные для большинства приложений (принцип Convention over configuration). Явная спецификация конфигурации требуется только в нестандартных случаях.
[править] История
Ruby on Rails был создан Дэвидом Хэйнемеером Ханссоном (англ. David Heinemeier Hansson) на основе его работы над средством управления проектами Basecamp и выпущен в июле 2004 года. Последней версией является 2.1, выпущенная 31 мая 2008 года.
[править] Архитектура
Основными компонентами приложений 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.rhtml
.
[править] Интеграция
Ruby on Rails может работать с Apache, Lighttpd или любым другим веб-сервером, поддерживающим FastCGI. Для разработки и отладки часто используется встроенный в Ruby веб-сервер WEBrick или Mongrel. С помощью плагина в Rails реализована поддержка сетевого протокола WebDAV.
В качестве сервера базы данных поддерживаются MySQL, Firebird, PostgreSQL, IBM DB2, Oracle и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite.
Для Windows существует дистрибутив Instant Rails c настроенной и готовой к работе сразу после установки рабочей средой для разработки Rails-приложений, которая включает в себя сервер Apache и СУБД MySQL. Для платформ Windows, Linux, MacOS X имеется комплексный установщик BitNami RubyStack, включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion.
Для разработки Ajax-приложений RoR поставляется с интегрированными JavaScript-библиотеками Prototype и Script.aculo.us, но также можно использовать и jQuery.
[править] Ссылки
- Сайт проекта Ruby on Rails(англ.)
- Русскоязычный сайт Ruby on Rails(русск.)
- Агрегатор русскоязычных блогов о Ruby on Rails(русск.)
- Русский вики по Ruby on Rails — документация, советы, примеры(русск.)
- База данных плагинов для Ruby on Rails(англ.)
- RubyOnRailsToRussian(русск.)
- BuildingWebApps - портал ресурсов для разработчиков на Ruby on Rails(англ.)
- ruby.su - коммуна ruby разработчиков(русск.)
[править] Литература
- Тейт Б., Хиббс К. "Ruby on Rails. Быстрая веб-разработка" - СПб.: BHV-Петербург, 2008. - 224 с.(русск.)
- Хэнссон Д. Х., Томас Д. "Гибкая разработка веб-приложений в среде Rails" - СПб: Питер, 2008. - 720 с.(русск.)
- Фоулер Ч. "Rails. Сборник рецептов" - СПб.: Питер, 2007. - 256 с.(русск.)
[править] Документы
- Ruby и Rails — откуда начать
- Рельсовые войны
- Долгожданный релиз Rails 1.0
- Ruby on Rails (русский)
- Ручная установка и запуск Rails
- Установка Ruby, Rails, Subversion, Mongrel и MySQL на Mac OS X
- Быстрый старт с Sqlite
- «Фрагменты» Rails
- Ruby и его оболочка (Computerworld)
- 12 самоучителей по Ruby on Rails
- Пересекая границы: В чем секрет Ruby on Rails?
- Ruby on Rails: Интернет встает на рельсы (Мир ПК)
- Новые рельсы Linux (Linux Format)
- Разработка web-приложений в среде Ruby on Rails
- Достоинства и недостатки Ruby on Rails (1.2)
- Full Ruby on Rails Tutorial
- "Создание собственных Web-приложений с помощью Ruby on Rails" (перевод глав из книги Patrick Lenz "Build Your Own Ruby On Rails Web Applications")
[править] Общение
- Форум Ruby on Rails по-русски
- Форум посвященный Rails (написан на RoR)
- Русскоязычный email-лист
- Русскоязычный форум на Винграде
[править] IDE с поддержкой RoR
- NetBeans IDE
- NetBeans and rails
- Aptana RadRails
- CodeGear 3rdRail
- IntelliJ IDEA (с использованием Ruby plug-in [1])
- Ruby in Steel (для Visual Studio) — версия 1.2 включает возможность визуального drag’n'drop проектирования UI, транслируя .erb-код в HTML и обратно.
- Flux 1.2 для пользователей Mac OS имеет поддержку Rails.
- XCode
[править] Веб-сервисы
- 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 хостинг-провайдер
[править] Сайты на RoR
|
|
---|---|
ASP.NET | DotNetNuke | MonoRail |
ColdFusion | ColdSpring | Fusebox | Mach-II | Model-Glue |
Java | Apache Cocoon | Apache Struts | AppFuse | Aranea framework |Eclipse |Google Web Toolkit |Grails |Hamlets |JavaServer Faces | JBoss Seam | jZeno | OpenLaszlo | OpenXava | Reasonable Server Faces (RSF) | RIFE | Shale Framework | SmartClient | Spring Framework | Stripes | Tapestry | ThinWire | WebObjects | WebWork | Wicket Framework | ZK Framework |
JavaScript | AJILE ·Clean AJAX ·Dojo Toolkit ·Echo ·Ext ·jQuery ·jMaki ·Microsoft AJAX Library ·MochiKit ·MooTools ·Prototype JavaScript Framework ·qooxdoo ·Rialto Toolkit ·Rico ·script.aculo.us ·SmartClient ·Spry framework ·Yahoo! UI Library |
Perl | Catalyst ·Interchange ·Maypole ·Mason |
PHP |
Akelos PHP Framework | BlueShoes | CakePHP | Canvas | CodeIgniter | DIY Framework | Drupal | Energine | Envos | FUSE | Horde | Kohana (Web Framework) | PHP Compiler | PHP For Applications | PHPOpenbiz | PRADO | Qcodo | Seagull Framework | Solar Framework | Symfony | Zend Framework | Zoop Framework |
Python | CherryPy ·Django ·Karrigell ·Nevow ·Porcupine ·Pylons ·Spyce ·TurboGears ·TwistedWeb ·Webware ·Zope |
Ruby | Camping ·Nitro ·IOWA ·Ramaze ·Cerise ·Merl ·Ruby on Rails |
Прочие языки | Alpha Five · Fusebox (ColdFusion и PHP) · Helma Object Publisher ( Server-side ) · Lift (Scala) · Magic (Scheme) · OpenACS (Tcl) · Seaside (Smalltalk) · UnCommon Web (Common Lisp) · Yaws (Erlang) ·Oracle Application Express (PL/SQL) |