rack: como utilizar o poder dos middlewares em suas aplicações rails
DESCRIPTION
Slides da palestra exibida no Rails for Kids 2009 - http://railsforkids.comTRANSCRIPT
RackRack
Como utilizar o poder dos Middlewares em suas aplicações Rails
Rack é uma interface é uma interface básica entre básica entre servidores web e e frameworks ruby ruby
Frameworks e Frameworks e ServidoresServidores
Crie:
Aplicações que não Aplicações que não dependem de frameworkdependem de framework
Seu próprio frameworkSeu próprio framework
MiddlewaresMiddlewares
Aplicações RackAplicações Rack
Um simples objeto ruby
não precisa ser uma não precisa ser uma classeclasse
Método call
recebe um parametro, o recebe um parametro, o enviromentenviroment
retorna um array com três retorna um array com três valoresvalores
env = { env = { “REQUEST_METHOD” => “GET”,
“QUERY_STRING” => “par=value”, ... }, },
return [ return [ 200, ,
{ { “Content-Type” => “text/plain” }, },
“Hello World!” ]]
MiddlewaresMiddlewares
são filtros que podem são filtros que podem ser usados para ser usados para interceptar um interceptar um request e e alterar o alterar o response
HTTPHTTP
Middleware
Middleware
Aplicação
Sinatra
Sinatra
Rails
$ rake middleware
use Rack::Lockuse Rack::Lock
use ActionController::Failsafeuse ActionController::Failsafe
use ActionController::Reloaderuse ActionController::Reloader
use ActionController::Session::CookieStore, ...use ActionController::Session::CookieStore, ...
use ActionController::ParamsParseruse ActionController::ParamsParser
use Rack::MethodOverrideuse Rack::MethodOverride
use Rack::Headuse Rack::Head
use use ActiveRecord::ConnectionAdapters::ConnectionActiveRecord::ConnectionAdapters::Connection......
use ActiveRecord::QueryCacheuse ActiveRecord::QueryCache
run ActionController::Dispatcher.newrun ActionController::Dispatcher.new
Rack Contribhttp://github.com/rack/rack-contrib/
• Rack::ETagRack::ETag
• Rack::JSONPRack::JSONP
• Rack::LocaleRack::Locale
• Rack::MailExceptionsRack::MailExceptions
• Rack::StaticCacheRack::StaticCache
• Rack::TimeZoneRack::TimeZone
• Rack::CallbacksRack::Callbacks
• Rack::NotFoundRack::NotFound
• Rack::DeflectRack::Deflect
• Rack::ResponseCachRack::ResponseCachee
• Rack::RelativeRedireRack::RelativeRedirectct
• Rack::AcceptFormatRack::AcceptFormat
• Rack::CookiesRack::Cookies
• Outros...Outros...
Rack::Cachehttp://tomayko.com/src/rack-cache/
Rack::Cachehttp://tomayko.com/src/rack-cache/
Rack Javascript Minifyhttp://github.com/lucianopanaro/rack-javascript-
minifier/
Rack::Cachehttp://tomayko.com/src/rack-cache/
Rack Javascript Minifyhttp://github.com/lucianopanaro/rack-javascript-
minifier/
Rack Roll http://github.com/semanticart/rack-roll/
você pode criar seu pode criar seu próprio próprio middleware