октября 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 о которых вы должны обязательно знать:
Read the rest of this entry »
октября 23, 2010 | Published in Rack
Сообщество Ruby обогащается новыми фреймворками почти каждую неделю, но среди них Rack не получил достаточного внимания которого он действительно заслуживает.
Rack изначально разрабатывался под вдохновением от пайтоновского wsgi и быстро стал фактически application/server — интерфейсом для всего сообщества Ruby — программистов благодаря своей простоте и перфекционизму создателей. Read the rest of this entry »
октября 9, 2010 | Published in Rack
В последние два года веб приложения притерпели решительных изменений. Время, когда каждый сайт представлял собой бункер, ожидающий прихода новых пользователей постепенно проходит. Я раздраженно вздыхаю каждый раз, когда мне приходится заполнять очередную форму регистрации, вместо того, чтобы воспользоваться «Connect with Facebook», «Sing in with Twitter» или «Log in with OpenID». Сейчас веб приложения становятся более открытыми миру. Один из лучших способов увеличения популярности и жизнеспособности нового сервиса является его дополнение из существующих баз пользователей таких приложений, как: Twitter, Facebook, Foursquare и т.д..
Есть много готовых модулей для регистрации для Ruby on Rails. Многие из них позволяют использовать упрощенную процедуру регистрации с помощью Facebook или Twitter аккаунтов. Но используя такие готовые модули в нескольких проектах я заметил одну их общую черту: они делают слишком много допущений относительно того, какой должна быть процедура регистрации на сайте. Конечно, готовые модули для регистрации позволяют быстро начать работать над простым сайтом, но я не вспоминаю ни одного случая, когда включенный мною в проект код готового модуля значительно упростил бы мою работу. Пришло время изменить привычный порядок вещей. Read the rest of this entry »