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
Eco-sistema:
1. DSL
2. HTTP Verbs
3. Rack/Middleware
4. Sinatra
1. DSL




     O que é DSL
         Domain-specific
           language
1. DSL




       DSL’s
    conhecidas
    HTML, CSS, XML, YML,
            SQL
2. HTTP Verbs




  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
3. Rack/Middleware




  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!
4. Sinatra



         O que é
        Sinatra?
    DSL, rodando sobre
            Rack
4. Sinatra


     Quem usa?
   Github
   Apple
   BBC
   Heroku
   Linkedin
4. Sinatra



  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ínimo
         require 'sinatra'
         get '/' do
           "Hello, world!"
         end
4. Sinatra


         Routing
  get '/' do show something end
  post '/' do create something end
  put '/' do replace something end
  patch '/' do modify something end
  delete '/' do annihilate something end
  options '/' do appease something end
4. Sinatra


                DRY
 ['/one', '/two', '/three'].each do |route|
   get route do
     "Triggered #{route} via GET"
   end
 end
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', 301
  end
4. Sinatra




             Views
   Dando um rostinho
   bonito para sua app
4. Sinatra




             Views
             get '/index' do
               erb :index
             end
4. Sinatra




             Views
set :views, File.dirname(__FILE__) + '/htm'
4. Sinatra



        Views
      templates
   Haml, Slim, Erb,
Markdown, Textile e etc
4. Sinatra

  Passando
dados p/ Views
         get '/home' do
           @name = 'Random User'
           erb :home
         end
4. Sinatra


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



 404 Not found
         not_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


             Hmk
4. Sinatra


Response time
Perguntas
    ?
Obrigado
 Marcus Sá
  @sa_vini

Conhecendo Sinatra

  • 1.
    Conhecendo Sinatra MarcusSá - Woompa @sa_vini
  • 2.
    Um pouco de história Pra explicar essa palestra
  • 3.
    Do que vamos falar? Sinatra, e seu eco- sistema
  • 4.
    Eco-sistema? Sim, há bemmais do que só código
  • 5.
    Eco-sistema: 1. DSL 2. HTTPVerbs 3. Rack/Middleware 4. Sinatra
  • 6.
    1. DSL O que é DSL Domain-specific language
  • 7.
    1. DSL DSL’s conhecidas HTML, CSS, XML, YML, SQL
  • 8.
    2. HTTP Verbs O que são os verbos HTTP? Diferentes ações para a mesma URL
  • 9.
    2. HTTP Verbs O que eles fazem? GET, POST, PUT, DELETE
  • 10.
    3. Rack/Middleware O que é Rack? Uma interface entre webservers e frameworks
  • 11.
    3. Rack/Middleware Devo me importar? Sim, você precisa saber como tudo funciona!
  • 12.
    3. Rack/Middleware E agora você pode tudo! Desenvolver suas apps ruby sem framework!
  • 13.
    4. Sinatra O que é Sinatra? DSL, rodando sobre Rack
  • 14.
    4. Sinatra Quem usa? Github Apple BBC Heroku Linkedin
  • 15.
    4. Sinatra Perfeito para API’s Porém não é só isso
  • 16.
    4. Sinatra Mas não é um framework Sem ORM, sem arquivos de configuração
  • 17.
    4. Sinatra Implementa MVC? Nem MVC, nem nenhum tipo de pattern
  • 18.
    4. Sinatra E como eu instalo? gem install sinatra
  • 19.
    4. Sinatra Esforço mínimo require 'sinatra' get '/' do "Hello, world!" end
  • 20.
    4. Sinatra Routing get '/' do show something end post '/' do create something end put '/' do replace something end patch '/' do modify something end delete '/' do annihilate something end options '/' do appease something end
  • 21.
    4. Sinatra DRY ['/one', '/two', '/three'].each do |route| get route do "Triggered #{route} via GET" end end
  • 22.
    4. Sinatra Rotas com query strings get '/:name' do # URL in the form /some_name?foo=XYZ "#{params[:name]} - #{params[:foo]}" end
  • 23.
    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
  • 24.
    4. Sinatra A primeirarota vence Caso 2 satisfaçam
  • 25.
    4. Sinatra Fazendo redirect get '/redirect' do redirect 'http://www.google.com', 301 end
  • 26.
    4. Sinatra Views Dando um rostinho bonito para sua app
  • 27.
    4. Sinatra Views get '/index' do erb :index end
  • 28.
    4. Sinatra Views set :views, File.dirname(__FILE__) + '/htm'
  • 29.
    4. Sinatra Views templates Haml, Slim, Erb, Markdown, Textile e etc
  • 30.
    4. Sinatra Passando dados p/ Views get '/home' do @name = 'Random User' erb :home end
  • 31.
    4. Sinatra Passando dados p/ Views <h1>Hello, <%= @name %>!</h1>
  • 32.
    4. Sinatra 404Not found not_found do "Rota não encontrada" end
  • 33.
    4. Sinatra 500 Server error error do "Y U NO WORK?" end
  • 34.
    4. Sinatra A partirdaí, dá pra fazer muito!
  • 35.
  • 36.
  • 37.
  • 38.