Книга: Программирование на языке Ruby
19.4.1. Создание простого приложения Nitro
19.4.1. Создание простого приложения Nitro
Nitro часто используется в сочетании с Og — библиотекой ORM, обеспечивающей устойчивость объектов Ruby. Но наличие Og необязательно; Nitro, в частности, хорош тем, что не нужно заранее решать, понадобится ли приложению база данных или иная форма обеспечения устойчивости. Если со временем проект изменится и такая нужда возникнет, то для превращения объектов Ruby в устойчивые достаточно будет добавить в модели несколько строк кода. Есть планы модифицировать семейство методов attr
, так что в будущем задача может стать еще проще.
Библиотека Og рассматривалась в разделе 10.4.7. В примерах работы с Nitro мы почти не будем пользоваться ей.
Хотя у Nitro очень много возможностей, для создания простого приложения нужно немногим больше, чем для создания обычного статического сайта.
Сначала создадим каталог приложения:
/home/jbritt/demo
Затем добавим в него папку public
, содержащую файл index.html
:
/home/jbritt/demo/public/index.html
Для начала сделаем этот файл совсем простым:
<html>
<head>
<title>Nitro!</title>
</head>
<body>
<h1>The Ruby Way</h1>
<h2>Hal Fulton</h2>
</body>
</html>
Теперь в корневом каталоге приложения создадим файл run.rb
:
require 'nitro'
Nitro.run
Чтобы увидеть новое приложение в действии, запустите файл run.rb
(из каталога demo/
). Потом откройте браузер и введите URL http://127.0.0.1:9999 (здесь 9999 — порт Nitro по умолчанию).
Если все пройдет удачно, то появится приведенная выше простая страница. Принимайте поздравления — вы создали первое приложения для Nitro! Разумеется, Nitro позволяет делать гораздо больше, поэтому посмотрим, как это приложение можно расширить.
Прежде всего, интерес представляет файл run.rb
. В зависимости от того, как вы развернули свою программу, его запуском может заниматься диспетчерский сценарий в каталоге public
. Но для демонстрации и тестирования вы можете запустить его вручную и воспользоваться встроенным диспетчером WEBrick. Впрочем, для промышленной эксплуатации имеет смысл изучить предоставляемую Nitro поддержку Mongrel, SCGI или FastCGI.
Nitro поддерживает много разных архитектур и паттернов, а приложение обычно строится на базе паттерна Модель-Вид-Контроллер (model-view-controller, MVC). Окончательный выбор всегда остается за вами, a Nitro облегчает переход от простых сайтов, предназначенных только для просмотра, к полноценным приложениям с поддержкой базы данных.
По умолчанию при обработке запроса Nitro сначала ищет файл в папке public
. Предполагается, что если имя страницы явно не указано, речь идет о файле index.html
. В этом отношении Nitro ведет себя как любая статическая система. При желании мы можем поместить в папку public
дополнительные статические HTML-страницы, а в ее подпапках хранить изображения и CSS-файлы.
Но интереснее то, что происходит, когда Nitro не может найти прямого соответствия запрошенной странице. Давайте изменим расширение файла index.html
на .xhtml
:
public/index.xhtml
Перезапустите сценарий run.rb
. Снова введите URL http://127.0.0.1:9999, вы должны увидеть ту же самую страницу. Не найдя файла index.html
, Nitro ищет файл index.xhtml
и загружает его. По умолчанию xhtml
— расширение, применяемое в Nitro для динамического контента. В общем случае, получив запрос, Nitro сначала ищет файл с расширением html
, а потом — xhtml
.
В XHTML-файлах могут быть подставляемые переменные и программная логика. Измените файл index.xhtml
следующим образом:
<html>
<head>
<title>Nitro!</title>
</head>
<body>
<h1>The Ruby Way</h1>
<h2>Hal Fulton</h2>
<p>Page last updated: #{Time.now}</p>
</body>
</html>
После перезагрузки страницы вы увидите текущие дату и время. Nitro также поддерживает синтаксис команд обработки, принятый в XML:
<?r curr_date = Time.new.strftime( "%a, %b %d, %Y") ?>
<html>
<head>
<title>Nitro!</title>
</head>
<body>
<h1>The Ruby Way</h1>
<h2>Hal Fulton</h2>
<p>Page last updated: #{curr_date}</p>
</body>
</html>
Отметим, что из наличия синтаксиса <?r ... ?>
не следует, что весь шаблон должен подчиняться правилам XML. Nitro располагает средствами для обработки шаблонов как XML-документов, а такой синтаксис позволяет иметь шаблоны, которые одновременно являются корректными XML-документами.
- 19.4. Разработка Web-приложений с помощью Nitro
- 19.4.3. Nitro и Og
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали
- 7.4.2. Создание собственного LiveCD
- Создание пользователя и группы на рабочей станции
- Создание корня документа:
- Создание многофайловой базы данных