SlideShare a Scribd company logo
1 of 38
Download to read offline
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

More Related Content

Similar to Conhecendo Sinatra

SlackShow 2010: Monitorando servidores com o Twitter
SlackShow 2010: Monitorando servidores com o TwitterSlackShow 2010: Monitorando servidores com o Twitter
SlackShow 2010: Monitorando servidores com o Twitter
Fernando Mercês
 

Similar to Conhecendo Sinatra (19)

Livro cisco
Livro ciscoLivro cisco
Livro cisco
 
Seminário Drupal São Paulo
Seminário Drupal São PauloSeminário Drupal São Paulo
Seminário Drupal São Paulo
 
Regra @font-face das CSS 3
Regra @font-face das CSS 3Regra @font-face das CSS 3
Regra @font-face das CSS 3
 
Entenda e Aplique o IPv6
Entenda e Aplique o IPv6Entenda e Aplique o IPv6
Entenda e Aplique o IPv6
 
LDAP
LDAPLDAP
LDAP
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Zabbix monitorando o zimbra collaboration 8.8 (1)
Zabbix   monitorando o zimbra collaboration 8.8 (1)Zabbix   monitorando o zimbra collaboration 8.8 (1)
Zabbix monitorando o zimbra collaboration 8.8 (1)
 
Redis
RedisRedis
Redis
 
Aula05 - cyrus imap
Aula05 -  cyrus imapAula05 -  cyrus imap
Aula05 - cyrus imap
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
SlackShow 2010: Monitorando servidores com o Twitter
SlackShow 2010: Monitorando servidores com o TwitterSlackShow 2010: Monitorando servidores com o Twitter
SlackShow 2010: Monitorando servidores com o Twitter
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologia
 
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
 
Squid
SquidSquid
Squid
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Sinatra
SinatraSinatra
Sinatra
 
Integrando Skype em aplicações Delphi
Integrando Skype em aplicações DelphiIntegrando Skype em aplicações Delphi
Integrando Skype em aplicações Delphi
 

Conhecendo Sinatra

  • 1. Conhecendo Sinatra Marcus Sá - 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á bem mais do que só código
  • 5. Eco-sistema: 1. DSL 2. HTTP Verbs 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 primeira rota 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 404 Not 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 partir daí, dá pra fazer muito!
  • 35. 4. Sinatra Hmk