Publique sua aplicação com Heroku
Criado por Terence Lee, @hone02
Traduzido por Maujor, site do Maujor
Instale Heroku
Siga os passos intitulados “Introduction” e “Set up” constantes na página Getting Started on Heroku with Ruby para se cadastrar, instalar Heroku CLI e fazer login.
COACH: Fale sobre os benefícios do uso da plataforma Heroku para publicação vs uso de servidores tradicionais.
Preparando sua app
Atualizando o banco de dados
Em primeiro lugar precisamos fazer com que nosso banco de dados funcione na plataforma Heroku, que usa um banco de dados diferente. Altere o seguinte em Gemfile:
para
Rode bundle install --without production
para configurar suas dependências.
Não se esqueça de fazer git add .
e git commit -m "Utilizando postgres como banco de dados de producao"
para adicionar esta mudança ao seu branch master antes de enviar ao heroku mais tarde.
COACH: You can talk about RDBMS and the different ones out there, plus include some details on Heroku’s dependency on PostgreSQL.
COACH: Você pode falar sobre RDBMS e as diferenças para outros sistemas de gerenciamento bem como apresentar alguns detalhes das dependências em Heroku no PostgreSQL.
Sistema de controle de versão
Para começar vamos adicionar nosso código em um sistema de controle de versão. Você pode fazer isso executando os seguintes comandos no terminal:
COACH: Agora é uma ótima oportunidade para falar sobre sistemas de controle de versão e git.
Publicando sua app
Criando a app
Precisamos criar nossa aplicação heroku executando heroku create
no terminal.
Esta ação mostrará no terminal o seguinte:
Neste caso “young-reaches-87845” é o nome da sua aplicação
Fazendo o pushing do código
A seguir precisamos fazer o push do código para o heroku excutando git push heroku master
. Você verá a saída do push como mostrado a seguir:
O envio estará terminado com êxito quando aparecer o texto “Launching…” como mostrado anteriomente.
Migrando o banco de dados
Precisamos migrar nosso banco de dados tal como fizemos localmente durante o workshop:
Depois que esse comando for executado você poderá acessar a app na sua URL. Para a aplicação que desenvolvemos nesse exemplo abra: https://young-reaches-87845.herokuapp.com/.
Opcionalmente, para visitar a página, você pode executar heroku open
no terminal.
Notas finais
A plataforma Heroku tem suas peculiaridades. Nela os aplicativos são executados em tempo real dentro de um ambiente efêmero - isso significa que (exceto para informações armazenadas em seu banco de dados) quaisquer arquivos criados por seu aplicativo irá desaparecer quando ele for reiniciado (por exemplo, quando você atualiza para uma nova versão).
Sistema de arquivos efêmero
Cada container dyno cria seu próprio sistema de arquivos efêmero contendo uma cópia do mais recente código publicado. Durante o período de vida do dyno os processos nele rodando usam um sistema de arquivos que são escritos em um rascunho temporário, contudo nenhum destes arquivos são visíveis para processamento em qualquer outro dyno, tais arquivos serão descartados no momento em que o dyno for parado ou restartado. Por exemplo, isso acontece sempre que o dyno é substituido em decorrência uma implantação de aplicativos e, também, em média uma vez por dia, pois assim está previsto pelo mecanismo de gestão nativo do dyno.
No tutorial para criação do App a funcionalidade que prevê a gravação de arquivos em uma Idea, permite escrever arquivos no diretório public/uploads
das suas aplicações . Você pode constatar o armazenamento efêmero em Heroku seguindo os seguintes passos:
- Inicie a aplicação executando o comando
heroku open
- Adicione uma nova Idea e nela uma imagem
- Reinicie a aplicação executando o comando
heroku restart
- Volte para a página da Idea e recarregue - a imagem não será mais visível
Contornando o armazenamento efêmero
É óbvio que armazenamento efêmero não é conveniente quando se trata de uma aplicação real, mas existem métodos para contornar o problema que são usados em muitos websites populares.
O método mais comum consiste em se usar um serviço de hospedagem externo, tais como, Amazon S3 (Simple Storage Service) ou Rackspace CloudFiles para hospedar os assets da aplicação. Tais serviços disponibilizam (por um custo baixo - em geral $0.10 por GB) armazenamento ‘na nuvem’ (os arquivos podem ser hospedados em qualquer lugar) proporcionando um armazenamento persistente para sua aplicação.
Não é do escopo deste tutorial detalhar a hospedagem ‘na nuvem’, mas se você estiver interessado em mais informações à respeito seguem alguns links úteis:
Como sempre, se você precisar de mais informações ou assistência pergunte aos seus coaches.