Популярность фреймворка Ruby on Rails постоянно растет, общество становится шире и, если раньше об использовании Ruby на Windows говорилось редко, то сегодня это вполне реальная практика.
Такие проекты как RubyInstaller (http://rubyinstaller.org/) и RailsInstaller (http://railsinstaller.org/) значительно упрощают создание рабочей среды на Windows. Вы можете использовать нативный MRI 1.8 и 1.9, JRuby или даже IronRuby работающий на .NET. С Windows работает большинство gem-пакетов, причем благодаря DevKit (https://github.com/oneclick/rubyinstaller/wiki/Development-Kit) «сишные» джемы можно собирать прямо из исходников.
Однако, несмотря на активное развитие средств разработки, до сих пор Windows и в частности веб-сервер IIS практически не использовались как «продакшн» решение для развертки Rails приложений. Но с появлением нового инструмента Helicon Zoo на базе Web Platform Installer – эта ситуация поменялась.
Helicon Zoo – это репозиторий веб фреймворков и приложений, позволяющий легко устанавливать и запускать Rails, Django (фактически любые rack, wsgi или FastCGI приложения) и Mojolicious на веб-сервере IIS.
Helcon Zoo использует Microsoft Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx). Это репозиторий и среда развертывания веб приложений и фреймворков от Microsoft, которая уже содержит в себе множество ASP.NET и PHP приложений. Для реализации функционала понадобилось лишь создать собственный feed с продуктами, чтобы пользователи получили возможность удобной и простой установки из репозитория.
Однако просто добавить продукты в репозиторий недостаточно. Ядром Helicon Zoo является native IIS модуль, по сути, играющий роль моста между веб-сервером IIS и фреймворками на Ruby, Python и Perl и др. Модуль работает по протоколу FastCGI, который уже зарекомендовал себя как надежный и быстрый метод взаимодействия с веб сервером. Ввод-вывод обрабатывается асинхронно, используя технологию IOCP. В качестве транспорта используются именованные каналы либо сокеты. В ближайшее время разработчиками планируется полностью реализовать поддержку асинхронного FastCGI (к сожалению ни один из существующих на данный момент фреймворков асинхронный FastCGI не поддерживает).
Поддерживаются IIS 7, IIS 7.5, а также IIS Express.
Скачайте Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx) и запустите его. В появившемся окне нажмите «Options»:
В опциях необходимо добавить ссылку на feed Helicon Zoo: www.helicontech.com/zoo/feed
Теперь если выбрать вверху «Application» а в меню слева перейти на «Tools», вы увидите новые приложения: «Blank Ruby on Rails Project», «Blank Django Project», «Blank Perl Project» и «Blank Mojolicious Project»:
Это пустые «Hello World» заготовки, которые устанавливают необходимые зависимости для дальнейшей разработки.
Нажмите на кнопку «Add» напротив «Blank Ruby on Rails Project», а затем на кнопку «Install».
Инсталлятор предложит установить следующие зависимости:
После нажатия на кнопку «I Accept» нужные пакеты будут загружены и установлены, после чего вам будет предложено настроить сайт для нового приложения.
Вы можете создать новый сайт либо выбрать существующий:
Когда установка и настройка закончены, приложение готово к запуску:
После установки «Blank Ruby on Rails Project» web.config файл для выбранного IIS-сайта выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="rails.project.x86" scriptProcessor="ruby.1.9.pipe" path="*" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" />
<add name="rails.project.x64" scriptProcessor="ruby.1.9.pipe" path="*" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
</configuration>
По умолчанию в качестве транспорта между IIS-модулем и воркером Ruby on Rails используются именованные каналы. Чтобы использовать сокеты, достаточно заменить параметр «scriptProcessor» на «ruby.1.9.tcp».
Все доступные скрипт-процессоры описаны в секции <heliconZooServer> файла applicationHost.config.
Через web.configтакже можно влиять на работу Rails-приложения. Так, например, по умолчанию оно запускается в отладочном режиме (RAILS_ENV = development). Чтобы переключиться в продакшн режим, вы можете установить переменную RACK_ENV следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<heliconZoo>
<application name="rails.project.x64" >
<environmentVariables>
<add name="RACK_ENV" value="production" />
</environmentVariables>
</application>
</heliconZoo>
Секция <heliconZoo> в файле web.config используется в основном для установки переменных окружения при вызове воркера. По сути, через секцию <environmentVariables> вы можете передавать в приложение любые необходимые параметры. В руби они будут доступны через глобальный хэш «ENV».
Работа над проектом Helicon Zoo ведется очень активно, компания-разработчик HeliconTech будет рада любым замечаниям и предложениям. На данный момент готовиться обновленная версия, в которой будет поддержка MRI 1.8, JRuby, а также Rails 2.3.
Коллекция «Blank» заготовок в скором времени будет расширена другими руби-фреймворками в частности Sinatra и готовыми приложениями, такими как RedMine и другие.
Такие проекты как RubyInstaller (http://rubyinstaller.org/) и RailsInstaller (http://railsinstaller.org/) значительно упрощают создание рабочей среды на Windows. Вы можете использовать нативный MRI 1.8 и 1.9, JRuby или даже IronRuby работающий на .NET. С Windows работает большинство gem-пакетов, причем благодаря DevKit (https://github.com/oneclick/rubyinstaller/wiki/Development-Kit) «сишные» джемы можно собирать прямо из исходников.
Однако, несмотря на активное развитие средств разработки, до сих пор Windows и в частности веб-сервер IIS практически не использовались как «продакшн» решение для развертки Rails приложений. Но с появлением нового инструмента Helicon Zoo на базе Web Platform Installer – эта ситуация поменялась.
Helicon Zoo
Helicon Zoo – это репозиторий веб фреймворков и приложений, позволяющий легко устанавливать и запускать Rails, Django (фактически любые rack, wsgi или FastCGI приложения) и Mojolicious на веб-сервере IIS.
Helcon Zoo использует Microsoft Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx). Это репозиторий и среда развертывания веб приложений и фреймворков от Microsoft, которая уже содержит в себе множество ASP.NET и PHP приложений. Для реализации функционала понадобилось лишь создать собственный feed с продуктами, чтобы пользователи получили возможность удобной и простой установки из репозитория.
Однако просто добавить продукты в репозиторий недостаточно. Ядром Helicon Zoo является native IIS модуль, по сути, играющий роль моста между веб-сервером IIS и фреймворками на Ruby, Python и Perl и др. Модуль работает по протоколу FastCGI, который уже зарекомендовал себя как надежный и быстрый метод взаимодействия с веб сервером. Ввод-вывод обрабатывается асинхронно, используя технологию IOCP. В качестве транспорта используются именованные каналы либо сокеты. В ближайшее время разработчиками планируется полностью реализовать поддержку асинхронного FastCGI (к сожалению ни один из существующих на данный момент фреймворков асинхронный FastCGI не поддерживает).
Поддерживаются IIS 7, IIS 7.5, а также IIS Express.
Устанавливаем Ruby on Rails
Скачайте Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx) и запустите его. В появившемся окне нажмите «Options»:
В опциях необходимо добавить ссылку на feed Helicon Zoo: www.helicontech.com/zoo/feed
Теперь если выбрать вверху «Application» а в меню слева перейти на «Tools», вы увидите новые приложения: «Blank Ruby on Rails Project», «Blank Django Project», «Blank Perl Project» и «Blank Mojolicious Project»:
Это пустые «Hello World» заготовки, которые устанавливают необходимые зависимости для дальнейшей разработки.
Нажмите на кнопку «Add» напротив «Blank Ruby on Rails Project», а затем на кнопку «Install».
Инсталлятор предложит установить следующие зависимости:
После нажатия на кнопку «I Accept» нужные пакеты будут загружены и установлены, после чего вам будет предложено настроить сайт для нового приложения.
Вы можете создать новый сайт либо выбрать существующий:
Когда установка и настройка закончены, приложение готово к запуску:
Под капотом
После установки «Blank Ruby on Rails Project» web.config файл для выбранного IIS-сайта выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="rails.project.x86" scriptProcessor="ruby.1.9.pipe" path="*" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" />
<add name="rails.project.x64" scriptProcessor="ruby.1.9.pipe" path="*" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
</configuration>
По умолчанию в качестве транспорта между IIS-модулем и воркером Ruby on Rails используются именованные каналы. Чтобы использовать сокеты, достаточно заменить параметр «scriptProcessor» на «ruby.1.9.tcp».
Все доступные скрипт-процессоры описаны в секции <heliconZooServer> файла applicationHost.config.
Через web.configтакже можно влиять на работу Rails-приложения. Так, например, по умолчанию оно запускается в отладочном режиме (RAILS_ENV = development). Чтобы переключиться в продакшн режим, вы можете установить переменную RACK_ENV следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<heliconZoo>
<application name="rails.project.x64" >
<environmentVariables>
<add name="RACK_ENV" value="production" />
</environmentVariables>
</application>
</heliconZoo>
Секция <heliconZoo> в файле web.config используется в основном для установки переменных окружения при вызове воркера. По сути, через секцию <environmentVariables> вы можете передавать в приложение любые необходимые параметры. В руби они будут доступны через глобальный хэш «ENV».
Что дальше?
Работа над проектом Helicon Zoo ведется очень активно, компания-разработчик HeliconTech будет рада любым замечаниям и предложениям. На данный момент готовиться обновленная версия, в которой будет поддержка MRI 1.8, JRuby, а также Rails 2.3.
Коллекция «Blank» заготовок в скором времени будет расширена другими руби-фреймворками в частности Sinatra и готовыми приложениями, такими как RedMine и другие.