rack: como utilizar o poder dos middlewares em suas aplicações rails

Post on 13-May-2015

1.129 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides da palestra exibida no Rails for Kids 2009 - http://railsforkids.com

TRANSCRIPT

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

Obrigado!Obrigado!

@cleitonfcocleitonfco@gmail.com

http://cleitonfco.com.br

top related