Page 1
Conhecendo Sinatra
Marcus Sá - Woompa@sa_vini
Page 2
Um pouco de história
Pra explicar essa palestra
Page 3
Do que vamos falar?
Sinatra, e seu eco-sistema
Page 4
Eco-sistema?Sim, há bem mais do que só código
Page 5
1. DSL2. HTTP Verbs3. Rack/Middleware4. Sinatra
Eco-sistema:
Page 6
O que é DSLDomain-specific
language
1. DSL
Page 7
DSL’s conhecidasHTML, CSS, XML, YML,
SQL
1. DSL
Page 8
O que são os verbos HTTP?
Diferentes ações para a mesma URL
2. HTTP Verbs
Page 9
O que eles fazem?
GET, POST, PUT, DELETE
2. HTTP Verbs
Page 10
O que é Rack?Uma interface entre
webservers e frameworks
3. Rack/Middleware
Page 11
Devo me importar?
Sim, você precisa saber como tudo funciona!
3. Rack/Middleware
Page 12
E agora você pode tudo!
Desenvolver suas apps ruby sem framework!
3. Rack/Middleware
Page 13
O que é Sinatra?
DSL, rodando sobre Rack
4. Sinatra
Page 14
Quem usa?4. Sinatra
GithubAppleBBCHerokuLinkedin
Page 15
Perfeito para API’s
Porém não é só isso
4. Sinatra
Page 16
Mas não é um framework
Sem ORM, sem arquivos de configuração
4. Sinatra
Page 17
Implementa MVC?
Nem MVC, nem nenhum tipo de pattern
4. Sinatra
Page 18
E como eu instalo?
gem install sinatra
4. Sinatra
Page 19
Esforço mínimorequire 'sinatra'get '/' do "Hello, world!"end
4. Sinatra
Page 20
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
Page 21
DRY['/one', '/two', '/three'].each do |route| get route do "Triggered #{route} via GET" endend
4. Sinatra
Page 22
Rotas com query strings
get '/:name' do # URL in the form /some_name?foo=XYZ "#{params[:name]} - #{params[:foo]}"end
4. Sinatra
Page 23
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
Page 24
A primeira rota vence
Caso 2 satisfaçam
4. Sinatra
Page 25
Fazendo redirect
get '/redirect' do redirect 'http://www.google.com', 301end
4. Sinatra
Page 26
ViewsDando um rostinho bonito para sua app
4. Sinatra
Page 27
Viewsget '/index' do erb :indexend
4. Sinatra
Page 28
Viewsset :views, File.dirname(__FILE__) + '/htm'
4. Sinatra
Page 29
Views templatesHaml, Slim, Erb,
Markdown, Textile e etc
4. Sinatra
Page 30
Passando dados p/ Views
get '/home' do @name = 'Random User' erb :homeend
4. Sinatra
Page 31
Passando dados p/ Views <h1>Hello, <%= @name %>!</h1>
4. Sinatra
Page 32
404 Not foundnot_found do "Rota não encontrada"end
4. Sinatra
Page 33
500 Server error
error do "Y U NO WORK?"end
4. Sinatra
Page 34
A partir daí, dá pra fazer
muito!
4. Sinatra
Page 36
Response time4. Sinatra
Page 38
ObrigadoMarcus Sá
@sa_vini