SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Conhecendo Sinatra

Seminário Drupal São Paulo
Seminário Drupal São PauloSeminário Drupal São Paulo
Seminário Drupal São Paulopedrofaria
 
Regra @font-face das CSS 3
Regra @font-face das CSS 3Regra @font-face das CSS 3
Regra @font-face das CSS 3Mauricio Maujor
 
Entenda e Aplique o IPv6
Entenda e Aplique o IPv6Entenda e Aplique o IPv6
Entenda e Aplique o IPv6Kleber Silva
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
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)PAULO R. DEOLINDO JUNIOR
 
Aula05 - cyrus imap
Aula05 -  cyrus imapAula05 -  cyrus imap
Aula05 - cyrus imapCarlos Veiga
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On RailsAndre Ferraro
 
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 TwitterFernando Mercês
 
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 & DockerGiovanni Kenji Shiroma
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologiaRômulo Jales
 
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...Anyssa Ferreira
 
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 2014MySQL Brasil
 
Integrando Skype em aplicações Delphi
Integrando Skype em aplicações DelphiIntegrando Skype em aplicações Delphi
Integrando Skype em aplicações DelphiAndreano Lanusse
 

Similaire à 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