38
Conhecendo Sinatra Marcus Sá - Woompa @sa_vini

Conhecendo Sinatra

Embed Size (px)

Citation preview

Conhecendo Sinatra

Marcus Sá - Woompa@sa_vini

Um pouco de história

Pra explicar essa palestra

Do que vamos falar?

Sinatra, e seu eco-sistema

Eco-sistema?Sim, há bem mais do que só código

1. DSL2. HTTP Verbs3. Rack/Middleware4. Sinatra

Eco-sistema:

O que é DSLDomain-specific

language

1. DSL

DSL’s conhecidasHTML, CSS, XML, YML,

SQL

1. DSL

O que são os verbos HTTP?

Diferentes ações para a mesma URL

2. HTTP Verbs

O que eles fazem?

GET, POST, PUT, DELETE

2. HTTP Verbs

O que é Rack?Uma interface entre

webservers e frameworks

3. Rack/Middleware

Devo me importar?

Sim, você precisa saber como tudo funciona!

3. Rack/Middleware

E agora você pode tudo!

Desenvolver suas apps ruby sem framework!

3. Rack/Middleware

O que é Sinatra?

DSL, rodando sobre Rack

4. Sinatra

Quem usa?4. Sinatra

GithubAppleBBCHerokuLinkedin

Perfeito para API’s

Porém não é só isso

4. Sinatra

Mas não é um framework

Sem ORM, sem arquivos de configuração

4. Sinatra

Implementa MVC?

Nem MVC, nem nenhum tipo de pattern

4. Sinatra

E como eu instalo?

gem install sinatra

4. Sinatra

Esforço mínimorequire 'sinatra'get '/' do "Hello, world!"end

4. Sinatra

Routingget '/' do show something endpost '/' do create something endput '/' do replace something endpatch '/' do modify something enddelete '/' do annihilate something endoptions '/' do appease something end

4. Sinatra

DRY['/one', '/two', '/three'].each do |route| get route do "Triggered #{route} via GET" endend

4. Sinatra

Rotas com query strings

get '/:name' do # URL in the form /some_name?foo=XYZ "#{params[:name]} - #{params[:foo]}"end

4. Sinatra

Rotas com wildcards

get '/*' do "You passed in #{params[:splat]}" # http://localhost:4567/foo/bar/baz/bop # params[:splat] = ["foo/bar/baz/bop"].end

4. Sinatra

A primeira rota vence

Caso 2 satisfaçam

4. Sinatra

Fazendo redirect

get '/redirect' do redirect 'http://www.google.com', 301end

4. Sinatra

ViewsDando um rostinho bonito para sua app

4. Sinatra

Viewsget '/index' do erb :indexend

4. Sinatra

Viewsset :views, File.dirname(__FILE__) + '/htm'

4. Sinatra

Views templatesHaml, Slim, Erb,

Markdown, Textile e etc

4. Sinatra

Passando dados p/ Views

get '/home' do @name = 'Random User' erb :homeend

4. Sinatra

Passando dados p/ Views <h1>Hello, <%= @name %>!</h1>

4. Sinatra

404 Not foundnot_found do "Rota não encontrada"end

4. Sinatra

500 Server error

error do "Y U NO WORK?"end

4. Sinatra

A partir daí, dá pra fazer

muito!

4. Sinatra

Hmk4. Sinatra

Response time4. Sinatra

Perguntas?

ObrigadoMarcus Sá

@sa_vini