Nesse post vou criar uma aplicação Ruby on Rails simples. Porém se você já tem uma aplicação rodando é possível fazer o deploy no heroku apenas instalando o heroku toolbelt e o git.

Requisitos (instalaremos neste post)

  • Git
  • Geração de chave ssh
  • Heroku toolbelt
  • Adicionar sua chave ssh no heroku
  • Adicionar repositório remoto com heroku

Abra um terminal CTRL SHIFT + T e vamos nessa.

Instalando Git e gerando chave ssh (caso não tenha feito)

Para instalar o git é só rodar no terminal:

sudo apt-get install git-core

Para gerar a chave ssh rode:

Lembrando que o passo a seguir só se aplica caso não tenha feito ainda, caso contrario corre o risco de você sobrescrever sua chave e não conseguir dá pull e push em outros servers como Github e Bitbucket

$ ssh-keygen -t rsa -C "your_email@youremail.com"

Instalando Heroku toolbelt

Para isso rode:

$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

Para que você possa dá pull e push no heroku você precisa adicionar a chave ssh que você gerou ou já possuia para isso você pode usar o comando heroku com os parametros keys ou keys:add.

Para verificar se a chave já existe rode um:

$ heroku keys

E para adicionar rode:

$ heroku keys:add

A aplicação Ruby on Rails

Como no heroku não existe poder de escrita no servidor, não é possível usar sqlite3, nem fazer upload de arquivos.

Para fazer upload de arquivos no heroku é preciso uma gem chamada de paperclip com AWS S3 ou dropbox, mas isso é papo para outro post.

Para mostra vou criar um novo projeto rails em seguida comento sobre os detalhes o q é necessário para uma aplicação existente

$ rails new sample-to-heroku
$ cd sample-to-heroku

Abra o arquivo Gemfile e adicione a linha:

gem 'sqlite3'
# por
gem 'pg'

Ainda no arquivo Gemfile e troque a linha:

gem "rails_12factor", group: :production

Substitua o conteudo do arquivo config/database.yml por:

development:
  adapter: postgresql
  encoding: unicode
  database: sample_to_heroku_development
  pool: 5
  username: postgres
  password: ********

test:
  adapter: postgresql
  encoding: unicode
  database: sample_to_heroku_test
  pool: 5
  username: postgres
  password: ********

Em seguida no terminal rode um bundle update.

Caso você não tenha postgres instalado postgres clique aqui para instalar

Vou criar um modulo users só para poder testar no heroku

$ sudo -u postgres psql # digite sua senha

postgres=# CREATE DATABASE sample_to_heroku_development;
CREATE DATABASE
postgres=# \q

$ rails g scaffold users name:string lastname:string born_in:date phone:string
$ rake db:migrate
$ rails s # para testar localhost:3000

Criando aplicação/Atribuindo uma existente no heroku

Com o camando heroku create [opcional_app_name] você pode adicionar o git:remote e cria aplicação lá no heroku.

$ heroku create 

No meu caso não coloquei nome e o heroku criou agile-citadel-4545

Caso você já tenha criado uma aplicação no site do heroku você pode adicionar o git:remote à essa aplicação ou à uma aplicação já existente, para isso rode:

$ heroku git:remote -a your_app_name

rode um:

$ git remote -v
# Deve aparecer mais algo parecido com isso
heroku  git@heroku.com:agile-citadel-4545.git (fetch)
heroku  git@heroku.com:agile-citadel-4545.git (push)

Hora do deploy

Agora chegou a hora do deploy

$ git push heroku master
$ heroku run rake db:migrate
$ heroku open # para abrir no seu navegador

Resumo

Bem pessoas é isso em breve tem mais.