Книга: Программирование на языке Ruby

19.5.1. Простой пример

19.5.1. Простой пример

Во время установки Wee создается генератор простых приложений, который, естественно, называется wee. Команда wee create my-demo создает подкаталог my-demo в текущем каталоге и записывает в него простое приложение на базе WEBrick.

Созданное приложение всего лишь подсчитывает, сколько раз пользователь щелкнул по ссылке. Файл run.rb на стороне сервера подготавливает компоненты приложения и главный класс, после чего запускает приложение под управлением сервера WEBrick.

require 'wee'
require 'wee/utils'
require 'wee/adaptors/webrick'
# Ваши компоненты.
require 'components/main'
app = Wee::Utils.app_for do
 Main.new.add_decoration(Wee::PageDecoration.new('Wee'))
end
Wee::Utils::autoreload_glob('components/**/*.rb')
Wee::WEBrickAdaptor.register('/арр' => app).start

Класс Main вызывается как главный компонент приложения. Каждый компонент должен реализовать метод render, порождающий разметку. Вызов метода add_decoration(Wee::PageDecoration.new('Wee')) изменяет конвейер построения страницы так, что результаты обращения к Main#render дополняются HTML-кодом заголовка и хвостовика.

Далее конфигурируется автоматическая перезагрузка файлов, чтобы можно было изменить код и проверить, как работает новая версия приложения, не перезапуская WEBrick. И наконец, запускается экземпляр сервера WEBrick, который обслуживает запросы к URL, начинающемуся с пути '/арр'. По умолчанию подразумевается порт 2000, но можно при запуске указать любой другой номер в качестве параметра:

Wee::WEBrickAdaptor.register('/арр' => арр).start(:Port => 8787 )

Компонент Main определяет метод render, который порождает разметку.

class Main < Wee::Component
 def initialize
  super()
  # Здесь должен быть ваш код инициализации...
 end
 def render
  r.anchor.callback(:click).with { r.h1("Welcome to Wee!") }
  r.text "#{ @clicks || 'No' } clicks"
 end
 def click
  @clicks = (@clicks || 0) + 1
 end
end

Wee позволяет пользоваться синтаксисом Ruby для генерации HTML-кода примерно так же, как библиотека XML Builder Джима Вайриха и генератор XML в Nitro. Однако в Wee можно еще связать ссылку с действием (в данном случае с методом click). Когда пользователь щелкает по ссылке, сгенерированной Wee, приложение понимает, что нужно вызвать метод click.

Оглавление книги


Генерация: 0.236. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз