Ruby on Rails
Ruby on Rails (русский)
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 был создан Дэвидом Хэйнемеером Ханссоном на основе его работы над средством управления проектами [
http://www.basecamphq.com Basecamp] и выпущен в июле 2004 года. Последней версией является 2.0.2, выпущенная 17 декабря 2007 года.
Архитектура
Основными компонентами приложений Ruby on Rails являются модель (model), представление (view) и контроллер (controller).
=== Модель ===
Модель предоставляет остальным компонентам приложения объектноориентированное представление данных (таких как каталог продуктов или список заказов). Объекты модели осуществляют загрузку и сохранение данных в реляционной базе данных, а также реализуют бизнеслогику.
Благодаря возможностям динамической типизации в языке Ruby разработчику достаточно наследовать свой класс модели от базового класса ActiveRecord::Base. Ruby on Rails автоматически связывает классы модели с таблицами в базе данных и создает атрибуты объектов для соответствующих полей таблицы.
=== Представление ===
Представление создает пользовательский интерфейс для отображения полученных от контроллера данных. Представление также передает запросы пользователя на манипуляцию данными в контроллер (как правило, представление не изменяет непосредственно модель).
В Ruby on Rails представление описывается при помощи [http://rubyclub.com.ua/messages/show/817 шаблонов 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 или [
http://mongrel.rubyforge.org/ Mongrel]
В качестве сервера базы данных поддерживаются MySQL, Firebird, PostgreSQL, IBM DB2?, Oracle? и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite.
Для Windows? существует дистрибутив Instant Rails? c настроенной и готовой к работе сразу после установки рабочей средой для разработки Rails-приложений, которая включает в себя сервер Apache и СУБД MySQL. Для платформ Windows?, Linux, MacOS X? имеется комплексный установщик [http://bitnami.org/stack/rubystack BitNami RubyStack], включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion.
Для разработки Ajax?приложений RoR поставляется с интегрированными JavaScriptбиблиотеками Prototype
и Script.aculo.us?, но также [http://ennerchi.com/projects/jrails можно использовать] и jQuery?.
Ссылки
[http://www.rubyonrails.org Сайт проекта Ruby on Rails]{{ref-en}}
[
http://www.rubyonrails.ru Русскоязычный сайт Ruby on Rails]{{ref-ru}}
[http://planet.rubyonrails.ru Агрегатор русскоязычных блогов о Ruby on Rails]{{ref-ru}}
[
http://wiki.rubyonrails.ru Русский вики по Ruby on Rails — документация, советы, примеры]{{ref-ru}}
[http://agilewebdevelopment.com/plugins База данных плагинов для Ruby on Rails]{{ref-en}}
[
http://ror2ru.elementalcms.org/ RubyOnRailsToRussian]{{ref-ru}}
[http://www.buildingwebapps.com/ BuildingWebApps – портал ресурсов для разработчиков на Ruby on Rails]{{ref-en}}
Литература
[
http://www.piter.com/book.phtml?978591180009 Хэнссон Д. Х., Томас Д. “Гибкая разработка веб-приложений в среде Rails” – СПб: Питер, 2008. – 720 с.]{{ref-ru}}
[http://www.piter.com/book.phtml?978591180652 Фоулер Ч. “Rails. Сборник рецептов” – СПб.: Питер, 2007. – 256 с.]{{ref-ru}}
Документы
[
http://live.julik.nl/2005/11/ror-for-starters Ruby и Rails — откуда начать]
[http://live.julik.nl/2005/11/php-is-so-90s Рельсовые войны]
[
http://prog.labis.ru/blog/archives/1-DolgoZhdannyj_reliz_Rails_1.0.html Долгожданный релиз Rails 1.0]
[http://wiki.rubyonrails.com/rails/pages/Rubyon+Rails%28%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29 Ruby on Rails (русский)]
[
http://ror2ru.elementalcms.org/index.php?n=Main.RailsStartManual Ручная установка и запуск Rails]
[http://fakmak.com/2007/5/19/ruby-rails-mongrel-mysql-mac-os-x Установка Ruby, Rails, Subversion, Mongrel и MySQL на Mac OS X]
[
http://ror2ru.elementalcms.org/index.php?n=Main.RailsStartSqlite Быстрый старт с Sqlite]
[http://ror2ru.elementalcms.org/index.php?n=Main.RailsParts «Фрагменты» Rails]
[
http://www.osp.ru/cw/2006/06/041_1.htm Ruby и его оболочка (Computerworld)]
[http://eyrie.blogsome.com/2006/12/21/p37/ 12 самоучителей по Ruby on Rails]
[
http://www.ibm.com/developerworks/ru/library/j-cb05096/index.html?S_TACT=105AGX99&S_CMP=Q4_T_YDX Пересекая границы: В чем секрет Ruby on Rails?]
[http://www.osp.ru/pcworld/2006/10/3403696/ Ruby on Rails: Интернет встает на рельсы (Мир ПК)]
[
http://wiki.linuxformat.ru/index.php/LXF83:Ruby_on_rails Новые рельсы Linux (Linux Format)]
[http://kolia.pp.ru/programming/060521_morev_rails/index.html Разработка web-приложений в среде Ruby on Rails]
[
http://alexlebedev.com/blog/we-are-on-rails/ Достоинства и недостатки Ruby on Rails (1.2)]
[http://www.meshplex.org/wiki/Ruby/Ruby_on_Rails_programming_tutorials Full Ruby on Rails Tutorial]
[
http://www.rsdn.ru/article/inet/rails.xml “Создание собственных Web-приложений с помощью Ruby on Rails” (перевод глав из книги Patrick Lenz “Build Your Own Ruby On Rails Web Applications”)]
Общение
[http://www.railsforum.ru/ Форум Ruby on Rails по-русски]
[
http://rubyclub.com.ua/ Форум посвященный Rails (написан на RoR)]
[http://groups.google.com/group/ror2ru Русскоязычный email-лист]
[
http://forum.vingrad.ru/ruby-jruby-ruby-on-rails-ror.html Русскоязычный форум на Винграде]
IDE на RoR
NetBeans IDE?
[
http://rubyclub.com.ua/NetBeans-for-ruby-on-rails-beginers.htm NetBeans and rails]
Aptana RadRails?
[
http://www.codegear.com/products/3rdrail/ CodeGear 3rdRail]
IntelliJ IDEA? (с использованием Ruby plug-in [http://plugins.intellij.net/plugin/?id=1293])
[
http://www.sapphiresteel.com/ Ruby in Steel] (для
Visual Studio?) – версия 1.2 включает возможность визуального drag’n’drop проектирования UI, транслируя .erb-код в
HTML и обратно.
Веб-сервисы
[http://services.alphaworks.ibm.com/isc/faq.html IBM Sharable Code] – онлайн сервис для создания Web 2.0 приложений и Web API “mashups” на основе Ruby on Rails
[
http://heroku.com/ Heroku] – онлайн
IDE? для создания и редактирования проектов Ruby on Rails. Для размещения приложений использует не традиционный хостинг, а распределенную среду Amazon Elastic Compute Cloud (
Amazon EC2?).
Сайты на RoR
[http://rails100.pbwiki.com/ Top 100 Rails’ sites]
[
http://www.bukinist.co.il/ Букинист —- книги в Израиле]
[http://www.garfield-comics.ru Комиксы «Гарфилд»]
[
http://www.fiveruns.com www.fiveruns.com]
[http://rghost.ru Файлообменник rghost.ru]
[
http://groups.google.ru/group/ror2ru/web/rubyonrails-2 Cписок сайтов на Ruby on rails в рунете]