aplicações rack - rs on rails 2010

49
APLICAÇÕES RACK Thiago Bueno Silva Monday, August 23, 2010

Upload: thibusil

Post on 26-Jul-2015

724 views

Category:

Documents


1 download

TRANSCRIPT

APLICAÇÕES RACKThiago Bueno Silva

Monday, August 23, 2010

Motivação

?Monday, August 23, 2010

HTTP

Christian Neukirchen (2007)

Web = Série de requisições e respostas HTTP.

O resto é framework que vai por cima.

HTTP é fácil!

Requests e Responses

Monday, August 23, 2010

Rack

Interface comum de interação entre Webservers e Ruby

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Deve responder a #call(env)

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Deve responder a #call(env)

Status HTTP

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Deve responder a #call(env)

Status HTTP

Content type

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Deve responder a #call(env)

Status HTTP

Content type

Response body

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Deve responder a #call(env)

Status HTTP

Content type

Response body

Monday, August 23, 2010

OBJETOS RACKSimplicidade extrema

Deve responder a #call(env)

Status HTTP

Content type

Response body

Servidor Rack

Monday, August 23, 2010

PROCESSOS RACKMinimalismo Extremo!

run Proc.new {|env| [200, {"Content-Type" => "text/html"}, ["Hello

world!!"]]}

Monday, August 23, 2010

SERVIDORES RACK

Monday, August 23, 2010

SERVIDORES RACK

CGI

Unicorn

Phusion Passenger

Ebb

Thin

FCGI

Webrick

Mongrel

Fuzed

Monday, August 23, 2010

FRAMEWORKS RACK

Monday, August 23, 2010

FRAMEWORKS RACK

Camping

Rum

Ruby on Rails

Sinatra

Maverick

Mack

Merb

Ramaze

Waves

Monday, August 23, 2010

Distribuição

Especificação

Handlers

Adapters Utilitários

“gem install rack”Middlewares

Rack

Monday, August 23, 2010

Distribuição

Especificação - Rack::Lint

Handlers - Webrick, Mongrel, Passenger, Unicorn...

Adapters - Rails, Sinatra, Merb, Camping...

Monday, August 23, 2010

Middlewares

Componentes genéricos

Interceptam requests

Manipulam responses

Monday, August 23, 2010

Middlewares

Middlewares

AplicaçãoServidor

Monday, August 23, 2010

I.E. DETECTORExemplo Simples

Monday, August 23, 2010

Safari

Monday, August 23, 2010

Internet Explorer

Monday, August 23, 2010

Middlewares

Rack::Static

Rack::CommonLogger

Rack::Reloader

Rack::ShowExceptions

Monday, August 23, 2010

Middlewares - rack-contrib

Rack::Profiler - Medidor de performance de requests

Rack::StaticCache - Caching para arquivos estáticos

Rack::Config - Configurações compartilhadas por todos middlewares

Monday, August 23, 2010

Middlewares - coderack.org

rack-recaptcha

rack-google_analytics

Zombie Shotgun

Rack::HTML5

Rack::Validate

Monday, August 23, 2010

Utilitários

Rackup

Executa aplicações

Builder

DSL para construção/configuração

Monday, August 23, 2010

SinatraMicro-framework Web

Não é MVC!Restfull

Métodos HTTP(GET, POST, PUT e DELETE)

Monday, August 23, 2010

Sinatra

Verbos HTTP

Monday, August 23, 2010

Sinatra

Mapeamento de padrões

Monday, August 23, 2010

SinatraHelpers

Filters (before, after)

Redirecionamentos

Controle de Erro

Suporte a middlewares

Testing frameworks

Suporte a templates engines

ERB, HAML, Erubis, ...

SASS, Less, ...

Monday, August 23, 2010

Aplicações Reais

Monday, August 23, 2010

Aplicações Reais

Monday, August 23, 2010

Aplicações Reais

Monday, August 23, 2010

Aplicações Reais

Monday, August 23, 2010

Aplicações Reais

Monday, August 23, 2010

RAILS E RACK

Monday, August 23, 2010

Rails e Rack

Rails 2.3 (Rails Metal)

Rails 3 (Merb+Rails)

Fácil utilização

Monday, August 23, 2010

Rails e Rack

ActionDispatch

“Rack for Rails”

Rackup

./config.ru

Rack::Request Rack::Response

ActionDispatch::Request

ActionDispatch::Response

Monday, August 23, 2010

Rails e Rack

Monday, August 23, 2010

Rails e Rack

use Rack::LockuseActionController::Failsafeuse Rails::Rack::Metaluse ActionController::RewindableInputuse ActionController::ParamsParseruse Rack::MethodOverride...

“rake middleware”

Monday, August 23, 2010

Rails e Rack

# environment.rb

# Push Rack::BounceFavicon at the bottomconfig.middleware.use Rack::BounceFavicon

# Add Lifo::Cache after ActiveRecord::QueryCache.# Pass { :page_cache => false } argument to Lifo::Cache.config.middleware.insert_after ActiveRecord::QueryCache, Lifo::Cache, :page_cache => false

config/environment.rb

Monday, August 23, 2010

Rails Middlewares

Server Rails AppMiddleware

Monday, August 23, 2010

Rails Middlewares

Server Rails AppRack::Cache

Storage

Monday, August 23, 2010

Sinatra + Rails 3./lib/hello_app.rb

./config/routes.rb

Monday, August 23, 2010

Sinatra vs. Rails

Fácil aprendizado

Prototipação

Applicações single-page

Redutores de Url, CMS simples, portifolios, blogs, etc...

Monday, August 23, 2010

Sinatra vs. Rails

Sem migrações

Sem plugins

Difícil implementação de aplicações completas

Monday, August 23, 2010

OBRIGADO

@tbueno

[email protected]

tbueno.com

Monday, August 23, 2010