Arquivos da categoria: Git

Deploy de aplicação Ruby on Rails no Heroku

O Heroku é um serviço de hospedagem na nuvem muito interessante pela facilidade de escalar a sua aplicação tanto em termos de processamento quanto de banco de dados. Como a configuração mais simples de aplicação no Heroku é gratuita, ele se torna mais interessante ainda, por permitir que projetos sejam colocados no ar inicialmente sem custo algum e à medida que crescerem passam a pagar por mais recursos do servidor.

O objetivo desse tutorial é indicar passo-a-passo como dar deploy de uma aplicação Ruby on Rails no Heroku utilizando o mecanismo de repositório remoto do Git. Antes de iniciarmos, você precisa fazer um cadastro no Heroku.

Considerarei que você tem seu ambiente Ruby on Rails configurado e, dessa forma, você só precisa instalar a gem do Heroku.

gem install heroku

Depois disso, vá para a pasta do seu projeto existente ou crie um novo projeto.

rails new [nome do projeto]
cd [nome do projeto]

O deploy para o heroku é feito dando push para um repositório remoto do Git, então precisamos antes criar um repositório local do Git para o projeto. Estando na pasta do projeto, execute:

git init

Para adicionar os arquivos do projeto ao controle de versão:

git add .

E depois dar commit:

git commit -a -m "Meu commit"

Antes de começarmos a interagir com o Heroku, precisamos criar uma chave SSH, executando o seguinte comando:

ssh-keygen -t rsa -C "[seu email]"

Agora, vamos criar uma aplicação no Heroku. Após executar o comando abaixo, serão solicitados o seu email e a senha utilizados no cadastro do Heroku.

heroku create --stack cedar

A aplicação é criada com um nome aleatório, então provavelmente você gostará de renomear a aplicação usando:

heroku rename newname

Antes de darmos deploy da aplicação, precisamos adicionar nossa chave SSH no Heroku com o seguinte comando:

heroku keys:add

Feito isso, enfim podemos dar deploy de nossa aplicação:

git push heroku master

Caso o comando acima dê o erro “Agent admitted failure to sign using the key. Permission denied (publickey). fatal: The remote end hung up unexpectedly”, execute o seguinte comando e tente o anterior novamente:

ssh-add ~/.ssh/id_rsa

Nesse momento, basta acessar o endereço http://[nome da sua aplicação].heroku.com/ para visitá-la. Infelizmente, ainda precisamos fazer algumas configurações relativas à banco de dados para seguir desenvolvendo nossas aplicações. O Heroku disponibiliza automaticamente um banco de dados PostgreSQL para cada aplicação, então precisamos acrescentar ao nosso arquivo Gemfile a dependência da gem ‘pg’ para conexão com esse banco de dados. Então, se for utilizar o PostgreSQL em todos os ambientes do seu projeto, altere a linha abaixo pela seguinte.

gem 'sqlite3'
gem 'pg'

Instale o banco PostgreSQL na máquina local:

sudo apt-get install postgresql

Depois instale a gem do PostgreSQL:

gem install pg

Caso receba o erro “ERROR: Error installing pg: ERROR: Failed to build gem native extension.” ao executar o comando acima, tente instalar os seguintes pacotes e volte a rodar o comando anterior:

sudo apt-get install libpq5 libpq-dev

E por último atualize o seu projeto:

bundle install

Mas se preferir utilizar outro banco localmente, você precisará configurar diferentes gems para cada ambiente da seguinte forma:

group :development, :test do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

E quando for atualizar seu projeto deverá utilizar o seguinte comando:

bundle install --without production

Pronto! Agora sua aplicação está pronta para ser executada no Heroku. A cada deploy novo que for dar é necessário executar o comando git push anteriormente utilizado e depois para executar as migrates no banco do Heroku é só usar:

heroku run rake db:migrate

Se tiver algum problema na aplicação, basta executar o comando abaixo para acessar os logs do servidor:

heroku logs

Para verificar o estado dos processos no servidor, use:

heroku ps

E caso precise executar algum código no ambiente Rails do servidor, executa um terminal remoto do Rails da seguinte forma:

heroku run console