Дружимся с Rack #2: Rack::Builder

октября 25, 2010  |  Published in Rack

rack logoВ первой части мы использовали 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

coktail b52Rack::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 о которых вы должны обязательно знать:

Read the rest of this entry »

Tags: ,

Дружимся с Rack #1: Hello Rack!

октября 23, 2010  |  Published in Rack

rack

Сообщество Ruby обогащается новыми фреймворками почти каждую неделю, но среди них Rack не получил достаточного внимания которого он действительно заслуживает.

Rack изначально разрабатывался под вдохновением от пайтоновского wsgi и быстро стал фактически application/server — интерфейсом для всего сообщества Ruby — программистов благодаря своей простоте и перфекционизму создателей. Read the rest of this entry »

Tags: ,