Книга: Программирование на языке Ruby
19.6.1. Основные идеи IOWA
19.6.1. Основные идеи IOWA
Приложение IOWA работает как фоновый процесс, который прослушивает сокет в ожидании запросов. IOWA включает различные адаптеры, так что источником запроса может быть CGI, Mongrel, WEBrick и т.д.
На домашней странице IOWA представлены хорошее объяснение архитектуры и учебное руководство, поэтому здесь мы приведем лишь краткий обзор основных особенностей.
Загрузить IOWA можно с сайта rubyforge.org. Gem-пакет будет подготовлен вместе с версией 1.0. Примеры, представленные в этом разделе, составлены на базе предварительной версии, доступной в виде zip- или tgz-файла.
В состав дистрибутива входит несколько примеров и тестов, демонстрирующих работу каркаса. Мы рассмотрим простое приложение, разработанное на основе этих примеров.
Для приложения IOWA нужен код, который запустит фоновый процесс, а в качестве фронтального процесса мы будем пользоваться встроенным сервером WEBrick. Сценарий арр.rb
решает обе задачи:
require 'iowa_webrick'
class HWApplication < Iowa::Application
self.daemonize = true
attr_accessor :dbpool
def initialize(*args)
super
Iowa.config[Iowa::Capplication][Iowa::Croot_url] = 'http://127.0.0.1:2000'
end
end
Iowa.run
По умолчанию конфигурационные данные читаются из файла арр.cnf
в текущем каталоге. Вот как выглядит наш файл:
socket:
hostname: localhost
path: ..
logging:
basedir: ../log
minlevel: 0
maxsize: 10000000
maxage: 86400
application:
daemonize: false
sessioncache:
class: LRUCache
maxsize: 20
ttl: 3600
dispatcher:
class: StandardDispatcher
policy:
class: iowa/Policy
Этот файл, записанный в формате YAML, содержит различную информацию о желаемом поведении IOWA. Необходим и еще один конфигурационный файл mapfile.cnf
, в котором описывается, как запросы отображаются на компоненты. Вот пример такого файла, содержащий всего одну строку:
/main.html: Main
Запросы к IOWA обычно обслуживаются комбинацией HTML-шаблонов и компонентов IOWA. Парные файлы имеют одинаковое базовое имя, но разные расширения. Принимаемый по умолчанию шаблон/объект называется Main
, так что приложение состоит из файлов Main.html
и Main.iwa
.
Файлы с расширением .iwa
представляют собой программы на Ruby; такое расширение в IOWA используется для того, чтобы отличить их от прочего кода, который может входить в состав приложения. Эти файлы играют ту же роль, что классы контроллеров в Nitro и Rails. Определенные в классе компонента методы доступны из соответствующего HTML-файла.
Демонстрационный файл Main.html
выглядит так:
<html>
<head><title>Текущее время...</title></head>
<body>
<р>Текущее время @now.</p>
<р>Счетчик равен @count.</p>
<а oid="reload">RELOAD</a>
</body>
</html>
В шаблонах IOWA можно смешивать обычный HTML-код и переменные экземпляра компонента. Отметим, что переменные необязательно «интерполировать» обычным способом, достаточно просто включить их в разметку.
Имеется также специальная переменная oid
, IOWA использует ее для динамического изменения шаблона в процессе прорисовки. В нашем примере с ее помощью создается ссылка на метод reload из класса компонента, определенного в файле Main.iwa
. Если задержать мышь над этой ссылкой в полученной странице (или посмотреть ее исходный текст), то вы увидите URL следующего вида:
http://127.0.0.1:2000/main.html/6b38f6fb-4f087af7-ab6JaqUM9KyWE.a.1.7
Такие URL позволяют IOWA отслеживать состояние сеанса. Если несколько раз щелкнуть по ссылке, то вы увидите, что URL изменяется. Если вручную восстановить предыдущее значение, вы получите состояние сеанса, соответствующее URL.
В данном случае состояние — это значение переменной экземпляра @count
. Вот как выглядит файл Main.iwa
:
class Main < Iowa::Component
attr_accessor :count
def awake
@count = 0
end
def setup
@count += 1
end
def now
Time.now.asctime
end
end
- 19.6. Разработка Web-приложений с помощью IOWA
- Основные параметры ЭЛТ-мониторов
- Основные "рычаги" управления производительностью
- 1.1. Информатика. Предмет информатики. Основные задачи информатики
- 11 Основные возражения и ответы на них
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 3.1. Основные нормативные руководящие документы, касающиеся государственной тайны
- Прием 45. «Простые слова. Четкие идеи. Сильные эмоции»
- Перетасуем идеи
- 11.4. Информационная безопасность и ее основные компоненты
- Основные неисправности приводов CD
- Глава 4 Поиск и выбор идеи