Colocando sua aplicação online com Heroku
Criado por Terence Lee, @hone02
Instale o Heroku
Siga os passos de “Introduction” e “Set up” do guia Getting Started on Heroku with Ruby (em inglês, mas é tranquilo de seguir :D) para se cadasrar, instalar o Heroku CLI e logar.
Treinadores: Fale sobre os benefícios de fazer deploy no Heroku ao invés de outro serviços tradicionais.
Preparando sua app
Controle de versão
Nós precisaremos colocar nosso código em algum sistema de controle de versão. Você pode fazer isso rodando o seguinte no terminal:
Treinadores: É um bom momento pra falar de sistemas de controle de versão e git.
Atualizando nosso banco de dados
Primeiramente, a gente precisa fazer com que nosso banco de dados funcione no Heroku, que usa um banco de dados diferente. Troque a seguinte linha na Gemfile:
para
Rode bundle install --without production
para instalar as novas dependências.
Treinadores: Vocês pode falar sobre SGBDs aqui a diferença entre eles, e incluir alguns detalhes sobre a dependência do Heroku ser do PostgreSQL.
Fazendo deploy da sua app
Criando a app no Heroku
Precisamos criar nossa aplicação Herku escrevendo heroku create
no Terminal.
Vamos ver algo parecido com isso:
`
Nesse caso “young-reaches-87845” é o nome da sua app. Mas vai ser diferente pra você :)
Subindo o código
Agora precisamos subir o nosso código pro Heroku escrevendo git push heroku master
.
Você vai ver algo parecido na sua tela:
Você sabe que o código já terminou de subir quando você vê o “Launching…” como no exemplo acima.
Migrar o banco de dados
Agora precisamos migrar nosso banco de dados como fizemos localmente:
Quando esse comando terminar, você pode ir para a aplicação na URL dada.
Pra esse exemplo, você pode ir para https://young-reaches-87845.herokuapp.com/.
Você também pode digitar heroku open
no terminal para abrir a página.
Notas finais
A plataforma Heroku tem suas peculiaridades. Aplicações rodadas no Heroku vivem num ambiente um pouco diferente, no qual qualquer arquivo criado pela sua aplicação vai desaparecer caso ela reinicie (por exemplo, quando você sobe uma versão nova). Os únicos dados que persistem estão dentro da sua base de dados. Leia sobre Ephemeral filesystem (em inglês) na documentação do Heroku.
No tutorial da aplicação tutorial a funcionalidade de anexar um arquivo é adicionada, o que resulta em arquivos sendo escritos na sua pasta
public/uploads
. Você pode entender melhor como Heroku lida com isso fazendo os seguintes passos:
- Abra sua aplicação com
heroku open
- Crie uma nova Idéia com uma nova imagem
- Reinicie a aplicação com
heroku restart
- Volte para a sua Idéia e atualize a página (F5). A imagem não estará mais visível.
Como resolver
Obviamente isso não parece ser bom se você está rodando uma aplicação real, mas existem várias formas de resolver isso que são usadas por vários websites.
A mais comum é usar um host externo como o Amazon S3 (Simple Storage Service) ou Rackspace CloudFiles. Esses serviços provêem (por um custo baixo - normalmente menos de $0.10 por GB) um armazenamento “na cloud” (significa que os arquivos podem estar potencialmente em qualquer lugar) que sua aplicação pode usar como um armazenamento persistente.
Essa funcionalide está um pouco fora de escopo pra esse tutorial, mas existem recursos disponíveis nos seguintes links (em inglês) caso você se interesse: