Ruby on Rails | это... Что такое Ruby on Rails? (original) (raw)
Ruby on Rails
страница по умолчанию | |
Тип | фреймворк для разработки веб приложений |
Разработчик | Rails Core Team |
Написана на | Ruby |
Интерфейс | веб-интерфейс |
Операционная система | кроссплатформенное программное обеспечение |
Последняя версия | 3.2.9 (12 ноября 2012) |
Тестовая версия | 4.0.0.beta (20 декабря 2011) |
Состояние | активное |
Лицензия | Лицензия MIT |
Сайт | rubyonrails.org |
Ruby on Rails — фреймворк, написанный на языке программирования Ruby. Ruby on Rails предоставляет архитектурный образец Model-View-Controller (модель-представление-контроллер) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных.
Ruby on Rails является открытым программным обеспечением и распространяется под лицензией MIT.
Содержание
- 1 Принципы
- 2 История
- 3 Архитектура
- 4 Интеграция
- 5 Реализации
- 6 Плагины
- 7 Редакторы и IDE
- 8 Сайты на Rails
- 9 Примечания
- 10 Литература
- 11 Ссылки
Принципы
Ruby on Rails определяет следующие принципы разработки приложений:
- Ruby on Rails предоставляет механизмы повторного использования, позволяющие минимизировать дублирование кода в приложениях (принцип Don’t repeat yourself).
- По умолчанию используются соглашения по конфигурации, типичные для большинства приложений (принцип Convention over configuration). Явная спецификация конфигурации требуется только в нестандартных случаях.
История
Ruby on Rails был создан Давидом Хейнемейером Ханссоном на основе его работы в компании 37signals над средством управления проектами Basecamp[1] и выпущен в июле 2004 года.
25 мая 2010 года выпущена версия 2.3.8.
23 декабря 2008 года команда проекта Merb объединилась с командой Rails с целью создания следующей версии Rails 3, которая объединит в себе лучшие черты обоих фреймворков.[2][3]
29 августа 2010 года вышел Rails 3.0.[4]
31 августа 2011 года вышел Rails 3.1.[5]
20 января 2012 года вышел Rails 3.2.[6]
Архитектура
Схематическое представление архитектуры модель-представление-контроллер
Основными компонентами приложений Ruby on Rails являются модель (model), представление (view) и контроллер (controller).
Модель
Модель предоставляет остальным компонентам приложения объектно-ориентированное отображение данных (таких как каталог продуктов или список заказов). Объекты модели могут осуществлять загрузку и сохранение данных в реляционной базе данных, а также реализуют бизнес-логику.
Для хранения объектов модели в реляционной СУБД по умолчанию в Rails 3 использована библиотека ActiveRecord. Конкурирующий аналог — DataMapper.
Представление
Представление создает пользовательский интерфейс с использованием полученных от контроллера данных. Представление также передает запросы пользователя на манипуляцию данными в контроллер (как правило, представление не изменяет непосредственно модель).
В Ruby on Rails представление описывается при помощи шаблонов ERB. Они представляют собой файлы HTML с дополнительными включениями фрагментов кода Ruby (Embedded Ruby или ERb). Вывод, сгенерированный встроенным кодом Ruby, включается в текст шаблона, после чего получившаяся страница HTML возвращается пользователю. Кроме ERb возможно использовать ещё около 20 шаблонизаторов.
Контроллер
Контроллер в Rails — это набор логики, запускаемой после получения HTTP-запроса сервером. Контроллер отвечает за вызов методов модели и запускает формирование представления.
Контроллером в Ruby on Rails является класс, наследованный от ActionController::Base
. Открытые методы контроллера являются так называемыми действиями (actions). Action часто соответствует отдельному представлению. Например, по запросу пользователя admin/list
будет вызван метод list
класса AdminController
и затем использовано представление list.html.erb
.
Интеграция
Предпочтительным методом интеграции с веб-серверами является проксирование — использование веб-сервера в качестве прокси-сервера перед сервером приложения. Особняком стоят модули Phusion Passenger для интеграции с серверами Apache и nginx.
Ruby on Rails использует интерфейс RACK, что позволяет использовать менее распространённые механизмы (FCGI, CGI, SCGI). Ruby on Rails может работать с Apache, Lighttpd или любым другим веб-сервером, поддерживающим FastCGI. Для разработки и отладки часто используется веб-сервер WEBrick, встроенный в Ruby, или Mongrel.[7] В качестве сервера базы данных поддерживаются MySQL, Firebird, PostgreSQL, DB2, Oracle и Microsoft SQL Server. Также поддерживается встраиваемая база данных SQLite.
Для Windows существует дистрибутив Instant Rails c настроенной и готовой к работе сразу после установки рабочей средой для разработки Rails-приложений, которая включает в себя сервер Apache и СУБД MySQL. Для платформ Windows, Linux, Mac OS X имеется комплексный установщик BitNami RubyStack[8], включающий в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion.
Помимо этого сайты BitNami.org и JumpBox.com[9] бесплатно предлагают образы VMware с готовой Linux-средой для развертывания RoR-приложений. Эти образы можно подключить к своему серверу виртуальных машин или развернуть в предлагаемой облачной среде.
Для разработки AJAX-приложений в RoR по умолчанию используется javascript-фреймворк jQuery, однако вместо него можно использовать и другие библиотеки. В ранних версиях Ruby on Rails (до 3.1), js-фреймворком по умолчанию был Prototype.
Реализации
JBoss предлагает открытую платформу Torquebox[10] для развертывания Rails-приложений, предлагающую функции планировщика задач, очереди сообщений, SOAP и даже управление SIP-сессиями.
Плагины
- ActiveScaffold — популярная альтернатива стандартному «scaffold», с использованием AJAX.[11]
- CommunityEngine — плагин-шаблон для быстрого создания полноценной социальной сети.[12]
Редакторы и IDE
- Aptana Studio
- CodeGear 3rdRail
- JetBrains RubyMine
- Ruby in Steel (для Visual Studio) — версия 1.2 включает возможность визуального drag’n’drop проектирования UI, транслируя .erb-код в HTML и обратно.
- Flux 1.2 для пользователей Mac OS имеет поддержку Rails.
- Textmate
- NetBeans
- Emacs
- Vim
Сайты на Rails
Популярные сайты на Rails:
Примечания
- ↑ Project management software, online collaboration: Basecamp
- ↑ Riding Rails: Merb gets merged into Rails 3!
- ↑ http://yehudakatz.com/2008/12/23/rails-and-merb-merge/
- ↑ Rails 3.0: It’s ready!
- ↑ Rails 3.1.0 has been released!
- ↑ Rails 3.2.0 has been released!
- ↑ fauna’s mongrel at master — GitHub
- ↑ BitNami :: RubyStack
- ↑ JumpBox for Ruby on Rails Deployment | JumpBox Virtual Appliances and Applications for Cloud Computing
- ↑ TorqueBox: Home
- ↑ ActiveScaffold :: A Ruby on Rails plugin for dynamic, AJAX CRUD interfaces
- ↑ Community Engine | A Social Networking Plugin for Ruby on Rails
Литература
- Тейт Б., Хиббс К. Ruby on Rails. Быстрая веб-разработка. — СПб.: BHV-Петербург, 2008. — 224 с.
- Хэнссон Д. Х., Томас Д. Гибкая разработка веб-приложений в среде Rails. — СПб.: Питер, 2008. — 720 с.
- Фоулер Ч. Rails. Сборник рецептов. — СПб.: Питер, 2007. — 256 с.
- Фернандес О. Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails. — Символ-Плюс, 2008. — 768 с.
- Руби С., Томас Д., Хэнссон Д. Х. Гибкая разработка веб-приложений в среде Rails. — 4-е изд. — Питер, 2012. — 464 с.
Ссылки
Веб-фреймворки | |
---|---|
ASP.NET | DotNetNuke • ASP.NET MVC • MonoRail |
ColdFusion | ColdSpring • Fusebox • Mach-II • Model-Glue |
Java | Apache (Cocoon • Struts • Velocity • WebWork 2) • AppFuse • Aranea • Eclipse • Facelets • Flexive • FreeMarker • Google Web Toolkit • Grails • Hamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClient • Spring • Stripes • Tapestry • ThinWire • Vaadin • WebMacro • WebWork • WebObjects • Wicket • ZK |
JavaScript | node.js • AJILE • Clean AJAX • Dojo Toolkit • Echo • Ext JS • jQuery • jMaki • Microsoft AJAX Library • MochiKit • MooTools • Prototype • qooxdoo • Rialto Toolkit • Rico • script.aculo.us • SmartClient • Spry • SproutCore • Yahoo! UI Library • Underscore • PhoneGap |
Perl | Catalyst • Interchange • Titanium • Maypole • HTML:Mason |
PHP | Acode • Akelos • BlueShoes • CakePHP • Canvas • CodeIgniter • Cotonti • DIY • Drupal • Fuse • Horde • Kohana • LiveStreet • PHP For Applications • PHPOpenbiz • PRADO • Qcodo • Seagull • Solar • Symfony • W3Core • Yii • Zend • Zoop • Joomla |
Python | CherryPy • Django • GAE framework • Karrigell • Nevow • Porcupine • Pylons • Pyramid • Spyce • TurboGears • Twisted • Tornado • Webware • Zope |
Ruby | Camping • Nitro • IOWA • Ramaze • Cerise • Merb • Ruby on Rails • Sinatra • Padrino |
Прочиеязыки | 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) |
Ruby (категория) | |
---|---|
IDE | ActiveState Komodo • Eric • RubyForge • RadRails • RubyMine |
Реализации | Ruby MRI • YARV • JRuby • IronRuby • Rubinius • XRuby • MacRuby • RubyJS • HotRuby |
Приложения | RubyGems • Rake • Interactive Ruby Shell • Capistrano • Hackety Hack |
Библиотеки и фреймворки | Adhearsion • Camping • eRuby (RHTML) • Hobo • Merb • Nitro • RubyCocoa • Ruby on Rails • Ramaze • Sinatra • Padrino • QtRuby |
Серверное ПО | Mongrel • Phusion Passenger (mod_rails/mod_rack) • WEBrick • mod_ruby |
Прочее | Application Archives • Document format • Book Guides • Ruby Central • RubyKaigi |