Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
hostname: localhost path: ..logging: basedir: ../log minlevel: 0 maxsize: 10000000 maxage: 86400application: 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. Парные файлы имеют одинаковое базовое имя, но разные расширения. Принимаемый по умолчанию шаблон/объект называется
MainMain.htmlMain.iwaФайлы с расширением
.iwaДемонстрационный файл
Main.html<html> <head><title>Текущее время...</title></head> <body> <р>Текущее время @now.</p> <р>Счетчик равен @count.</p> <а oid="reload">RELOAD</a> </body></html>В шаблонах IOWA можно смешивать обычный HTML-код и переменные экземпляра компонента. Отметим, что переменные необязательно «интерполировать» обычным способом, достаточно просто включить их в разметку.
Имеется также специальная переменная
oidMain.iwahttp://127.0.0.1:2000/main.html/6b38f6fb-4f087af7-ab6JaqUM9KyWE.a.1.7Такие URL позволяют IOWA отслеживать состояние сеанса. Если несколько раз щелкнуть по ссылке, то вы увидите, что URL изменяется. Если вручную восстановить предыдущее значение, вы получите состояние сеанса, соответствующее URL.
В данном случае состояние — это значение переменной экземпляра
@countMain.iwaclass Main < Iowa::Component attr_accessor :count def awake @count = 0 end def setup @count += 1 end def now Time.now.asctime endend19.6.2. Шаблоны в IOWA
Большинство Web-приложений только выигрывает от разделения кода и шаблонов представления, но IOWA, как и Nitro, позволяет вообще обходиться без компонентов и помещать весь код на Ruby в представление. Ниже приведен файл PureView.html, содержащий как код класса, так и HTML-разметку:
<% class PureView < Iowa::Component def right_now Time.now end end%><html> <head><titlе>Автономный вид</title></head> <body> <р>Текущее время @right_now.</p> </body></html>Но, в отличие от Nitro, это работает только в том случае, когда для представления нет соответствующего компонента. Если имеются оба файла, то IOWA не станет анализировать код, встроенный в HTML-файл.
Шаблон может содержать циклы и условные предложения. Добавим такой метод в файл
Main.iwadef after_dinner? Time.now.hour >19endТогда можно реализовать в
Main.htmlif<if oid='after_dinner?'> <р>Обед закончен. Что на десерт?</р></if>Хороший вопрос! Что на десерт? Пусть IOWA и ответит. Мы поручим
Main.iwadef desserts %w{ Пирожные Печенье Фрукты Мороженое }endА в файле
Main.htmlif
