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.
O 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!