Дружимся с Rack #2: Rack::Builder
октября 25, 2010 | Published in Rack
В первой части мы использовали rackup для того, чтобы сделать возможным выбор порта и сервера для запуска rack-приложения. Rackup’у мы предоставляли файл конфигурации следующего содержимого:
# config.ru run Proc.new {|env| [200, {"Content-Type" => "text/html"}, ["Hello Rack!"]]}
Глубоко в своих недрах rackup преобразует ваш скрипт конфигурирования в экземпляр Rack::Builder. А теперь о том, что же такое Rack::Builder?
Что же такое Rack::Builder?
Rack::Builder реализует маленький DSL (в переводе язык предметной области или что-то типа того) для многократного построения Rack приложений.
- Документация по Rack API
Rack::Builder это такая штука, которая склеивает различные Rack Middleware и приложения вместе и преобразует это месиво в то, что носит гордое название Rack Application. Rack::Build можно представить как коктейль изготовленный методом build — наслоением одного составляющего над другим.
Давайте сообщим Rack о том, что приложение infinity следует запускать на базе сервера WEBrick, по 9292 порту:
infinity = Proc.new {|env| [200, {"Content-Type" => "text/html"}, [env.inspect]]} Rack::Handler::WEBrick.run infinity, :Port => 9292
Все экземпляры infinity посылают хэш env преобразованный в человекопонятную строку назад в браузер.
Ниже представлены три основных метода из Rack::Builder о которых вы должны обязательно знать: