Crie sua primeira app de votação com Sinatra
Criado por Piotr Szotkowski, @chastell Traduzido por Nathalia Pinheiro Mesquita, @nathi_pinheiro
Nós vamos criar um pequeno app de votação do zero usando um framework de desenvolvimento web para Ruby chamado Sinatra, e que é muito parecido com Ruby on Rails. Mas é só outra ferramenta para fazermos nosso trabalho e uma bem divertida também!
Imagine seu grupo de amigos tentando decidir o que pedir para sua maratona de filmes semanal. Com tantas opções de fast food para pedir, isso pode se tornar uma discussão e tanto. É nessa hora que entra o nosso app!
INSTRUTOR(A): Breve explicação sobre o que é o Sinatra.
Instalação Sinatra
Lembra como nós precisávamos instalar Ruby on Rails? Da mesma maneira precisamos instalar o Sinatra:
Crie sua primeira aplicação Sinatra
Crie o arquivo sufragista.rb
com o seguinte conteúdo:
Você pode chamar seu arquivo Ruby do que preferir. voto.rb
por exemplo funcionaria bem também. Mas Sufragista é uma referencia a um evento super importante no movimento a favor do direito das mulheres, então vamos usar este por agora!
Rode sua app
Vá para o diretório onde você colocou sua app e execute ruby sufragista.rb
Agora você pode visitar localhost:4567. Onde você deverá
ver a página “Olá, eleitor!”, o que significa que a geração do seu novo
app está funcionando corretamente. Aperte Ctrl+C no terminal para parar o servidor. Se Ctrl+C não funcionar para você significa que você provavelmente está usando Windows e Ctrl+Z/ Ctrl+Pause / Ctrl+Break deve resolver esse problema.
INSTRUTOR(A): Explique o método POST e GET e como eles se comunicam com o browser.
Adicione o index view
Para manter tudo em ordem vamos criar um
diretório para nossas views (e nomear como views
).
Coloque esse código no arquivo index.erb
dentro do diretório views
:
e dentro do sufragista.rb
:
Mude a ação get
:
Execute ruby sufragista.rb
, cheque seus
resultados e pare o servidor com Ctrl+C.
INSTRUTOR(A): Fale um pouco sobre HTML e erb. Explique sobre templates e sobre o que são constantes globais.
Templates
Ajuste o arquivo index.erb
no diretório views
e adicione a linha <h1>…</h1>
:
Mude a ação get
:
INSTRUTOR(A): Explique o que são instancias de variáveis e como Sinatra faz elas visíveis nas views.
Adicione a habilidade de fazer um POST dos resultados
Coloque isto no sufragista.rb
:
Crie um novo arquivo cast.erb
no diretório views
,
e coloque lá um pouco de HTML com código Ruby junto:
INSTRUTOR(A): Explique como o POST funciona. Como buscar o que
foi mandado no formulário? de onde veio o params
?
Construa um layout comum
Crie o arquivo layout.erb
no diretório views
.
Coloque o seguinte lá:
Remova a parte acima dos outros dois templates
(index.erb
e cast.erb
que estão no diretório views
).
INSTRUTOR(A): Fale sobre a estrutura de documentos HTML e sobre como a construção de código comum
funciona. Explique o que yield
faz.
Adicione o resultado route e o resultado view
Cole o seguinte código em sufragista.rb
:
Crie um novo arquivo no diretório views
, chamado results.erb
.
Execute ruby sufragista.rb
, cheque
seus resultados e pause o servidor com Ctrl+C.
INSTRUTOR(A): Explique tabelas HTML e como os valores faltando vem como zero.
Guarde os resultados usando YAML::Store
Hora de algo novo! Vamos salvar nossas escolhas.
No topo de sufragista.rb
, adicione o seguinte:
Adicione mais código em sufragista.rb
– substitua
post '/cast'
e get '/results'
com o seguinte:
INSTRUTOR(A): Explique o que é YAML.
Veja como o arquivo YAML muda quando votos são salvos
Vamos abrir votos.yml
. E votar. E checar novamente.
INSTRUTOR(A): Vai ter situações onde um ou mais estudantes vão esquecer de pausar o servidor antes de rodá-lo novamente. É uma boa oportunidade para procurar na Internet por uma solução. Eles não tem que saber de tudo sobre “matar” processos para achar a solução.
INSTRUTOR(A): No final explique brevemente a diferença entre Sinatra e Rails.
Brinque com o app
Tente mudar algumas coisas no app como:
- Adicionar alguma lógica adicional nas views.
- Redirecionar para os resultados.
- Adicione outra votação; como o arquivo YAML precisaria mudar?
- Tente estilizar o arquivo de diferente maneiras.
Outros Guias
- Handy cheatsheet for Ruby, Rails, console etc.
- Guia 1: Tutorial de Instalação para Rails Girls
- Guia 2: Tutorial para criação da app Rails Girls
- Guia 3: Como enviar para o GitHub
- Guia 4: Colocando seu app online em…
- Guia 5: Funcionalidades de uma área de comentários para a app Rails Girls
- Guia 6: Adicione design à sua aplicação com HTML e CSS
- Guia 7: Thumbnails em listas de ideas
- Guia 8: Autenticação (para usuários) com Devise
- Guia 9: Adicionando Gravatar para a aplicação
- Guia 10: Melhorando seu design da sua aplicação com HTML e CSS
- Guia 11: Continuous Deployment
- Guia 12: Construindo um aplicativo de votação em Sinatra (Você está aqui!)
- Guia 13: Construa um diário em Ruby on Rails
- Guia 14: Adicione back-end ao seu aplicativo (páginas de administração)
- Guia 15: Acesse explicações adicionais do app Rails Girls