Seções iMasters
Ruby + Ruby on Rails

Sinatra: um pouco de DSL e recursos 2.0

Olá pessoal!

A quanto tempo não escrevia por aqui. Fiquei afastado durante esse tempo, devido a alguns projetos que me tomaram muito do tempo. Mas agora, pra compensar, vamos falar um pouco de Ruby (#coisalindahein), e mais especificamente sobre Sinatra.

Sinatra é uma linguagem de domínio específico (DSL) para a criação rápida de aplicações web escritas em Ruby. Ele mantém uma característica mínima definida, deixando livre o desenvolvedor para utilizar as ferramentas que melhor lhe servir em sua aplicação. E destaca por sua simplicidade em fazer as coisas acontecerem.

Vamos preparar o terremo pra usarmos o poder de Sinatra:

gem install sinatra

Agora, um simples “hello”:

#myapp.rb
get '/hello/' do
"Hello, my name is Sinatra"
end

Salve o arquivo, como myapp.rb, assim como o comentário la primeira linha de nosso arquivo rb.

Agora execute:

ruby -rubygems myapp.rb

Se tudo correr bem, você verá isso:

Sinatra has take the stage ..
Listening on 0.0.0.0:4567

Agora acesse localhost:4567/helloHan

Mas o que realmente fizemos? O que realmente o Sinatra fez?

Bem, como Sinatra é uma DSL, os recursos que vamos disponibizar, são os próprios metodos. O Sinatra usa recursos padrões REST.

GET
POST
PUT
DELETE

Outro exemplo, agora com parâmetro:

get '/hello/:name' do
"Hello #{params[:name]}!"
end

Você pode escrever essa “rota” no mesmo arquivo, basta apenas chamar este recurso:

http://localhost:4567/hello/mateus

Ah, também podemos usar um outro recurso de Ruby, block:

get '/say/hello/to/:name' do |n| 
"Hello #{n}!"
end
http://localhost:4567/say/hello/to/mateus

E um exemplo usando Regular Expressions:

get %r{/carambameu/([w]+)} do
"Hello, #{params[:captures].first}!"
end

Agora algumas outras coisas interessantes:

error 403 do
'Access forbidden'
end

get '/secret' do
403
end

Acessando o recurso /secret ele chama o metodo de error 403, nos dando a mensagem ‘Access forbidden’. Legal, né?

Agora personalizando nosso “error 404″:

not_found
'This is nowhere to be found'
end

Mas até gosto da paágina de erros default do Sinatra. Tente acessar:

http://localhost:4567/issonaoexiste

Pra ambiente dev, é muito legal. Ele ainda te dá um dica de como fazer esse recurso.

Considerações

Sinatra não é um framework Model-View-Controller. São apenas controles especificos de URL que o direciona para código Ruby relevante, que retorna resultados como resposta. Isto irá habilitar você a escrever códigos limpos, com aplicações devidamente organizadas, separando as views do código da aplicação, por exemplo.

Neste link do Github, você também encontra Sinatra, a página oficial do projeto é www.sinatrarb.com.

As aplicações em produção com Sinatra são:

  • Github Services;
  • Git Wiki;
  • Integrity;
  • Seinfeld Calendar;

Espero que este artigo traga bons resultados em estudos e casos de uso de Sinatra. Postem dúvidas e comentários, porque realmente agora estou de volta.

Abraço!

Mateus Prado

é especialista em Engenharia de Software. É palestrante de eventos nacionais sobre Ruby, Rails, Python, Java e Arquitetura. Trabalha como desenvolvedor na Locaweb, empresa líder em Hosting e Serviços de Internet na América Latina, onde é responsável em criar projetos em multiplas linguagens, como, C#, .NET, Ruby, Rails, Sinatra, Python, Web.py e outras tecnologias Web 2.0. Além disso, é apaixonado por virtualização e cloud computing e user expert de MacBooks.

Email
Comente também

2 Comentários

Mateus Prado

Galera,
Este meu perfil está desatualizado enquanto o galera do iMasters não responde meus email, vou postar aqui. rs.

Mateus Prado é Especialista em Engenharia de Software. É palestrante de eventos nacionais sobre Ruby, Rails, Python, Java e Arquitetura. Trabalha como desenvolvedor na Locaweb, empresa líder em Hosting e Serviços de Internet na América Latina, onde é responsável em criar projetos em multiplas linguagens, como, C#, .NET, Ruby, Rails, Sinatra, Python, Web.py e outras tecnologias Web 2.0. Além de ser apaixonado por virtualização e cloud computing, é user expert de MacBook’s.

André Santos

Sinatra é um bom frameworks para aplicações simples, vi um post de com fazer um blog estático nele que tbm é útil http://blog.glaucocustodio.com/2012/12/13/desenvolvimento-web-com-sinatra-criando-um-blog-estatico/
Valeu.

Qual a sua opinião?