Rodrigo Aguas

Deploy de aplicação Ruby on Rails no Heroku

31/01/12

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

Instalando RVM, Ruby e Rails no Ubuntu

31/01/12

Nesse tutorial vamos preparar um ambiente de desenvolvimento Ruby on Rails numa máquina Ubuntu. Partiremos de uma instalação padrão do Ubuntu 11.10, sem nenhum pacote extra instalado, e seguiremos o passo-a-passo de como instalar o Ruby enVironment (Version) Manager (RVM), Ruby e Rails. No momento em que escrevo esse tutorial, as versões atuais deles são RVM 1.10.2, Ruby 1.9.3 e Rails 3.2.1, mas o passo-a-passo deve funcionar com outras versões próximas.

RVM é uma ferramenta de linha de comando que permite a você facilmente instalar, gerenciar e trabalhar com múltiplos ambientes de interpretadores Ruby e conjuntos de gems.”

Para a instalação do RVM, precisaremos da ferramenta curl. Como essa não vem instalada, instalaremos executando o seguinte comando em um Terminal:

sudo apt-get install curl

Agora podemos instalar o RVM executando:

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Terminada a instalação, usaremos o comando abaixo para acrescentar ao nosso arquivo .bashrc a carga do RVM:

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc

Feito isso, feche o terminal atual e abra um novo para verificarmos se a instalação foi feita corretamente. Execute o seguinte comando:

rvm -v

Deverá aparecer uma mensagem parecida com a abaixo para confirmar o sucesso da instalação. Caso contrário, algo não deu certo na instalação do RVM.
rvm -v

Antes de seguir para a instalação do Ruby 1.9.3, devemos instalar alguns pré-requisitos informados pelo seguinte comando:

rvm requirements

Ou seja, devemos executar a seguinte instalação de pacotes:

sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Agora chegou o momento de instalarmos o Ruby 1.9.3, execute o comando abaixo e aguarde os downloads e o fim da instalação, que pode demorar um pouco.

rvm install 1.9.3

Depois da instalação, devemos informar ao RVM que essa será a versão do Ruby a ser utilizada por padrão.

rvm --default use 1.9.3

Podemos verificar a eficácia do comando anterior analisando a saída do seguinte comando:

ruby -v

A última instalação que precisamos é da própria gem do Rails:

gem install rails

Para finalizar, criaremos um projeto utilizando o banco de dados sqlite3 (que é o padrão do Rails). Abra um console e vá até a pasta onde deseja criar o projeto, executando o comando abaixo será criada uma pasta com o nome do projeto e toda a estrutura de um projeto Rails dentro.

rails new [nome do projeto]

Caso queira utilizar bancos de dados MySQL em seu projeto, execute os comandos abaixo para instalar o servidor, o cliente e a gem MySQL. Será solicitada uma senha de acesso para o usuário root do banco.

sudo apt-get install mysql-server mysql-client
gem install mysql2

A criação do projeto utilizando MySQL deverá ser feita com o seguinte comando:

rails new [nome do projeto] -d mysql

Métricas para Campanhas de Marketing Online com Google Analytics

7/12/11

Muito se escuta sobre a importância da divulgação em redes sociais, como Facebook e Twitter, mas poucos sabem como mensurar o retorno desse marketing. A popularização do Google Analytics já foi uma enorme evolução sobre aqueles contadores ridículos e pré-históricos de acesso no estilo “Você é o 4362º visitante desse site”. Graças ao Google!

Entretanto, as pessoas utilizam o Google Analytics quase como se fosse apenas um contador de acesso um pouco mais avançado, onde você pode selecionar um intervalo de tempo e ver os acessos nele ou saber algumas informações a mais dos usuários, como navegador de internet, resolução de tela e etc.

Vou explicar nesse artigo como utilizar o Google Analytics para mensurar o retorno das suas campanhas de marketing online, ou seja, ter métricas eficazes sobre os acessos gerados por cada esforço de marketing. Além disso, possibilitar a comparação entre diferentes abordagens, chamado de teste A/B, e tomar decisões de marketing de forma a ter o melhor retorno de visitantes nas campanhas online baseando-se em números e não na intuição.

Tudo que veremos nesse artigo será relacionado à tela de Campanhas do Google Analytics, que fica dentro do item Origens em Fontes de Tráfego no menu lateral. Por enquanto essa tela estará vazia se você nunca utilizou campanhas, como a que segue abaixo. Mas ao fim já teremos dados de uma divulgação no Twitter e Facebook. Então vamos lá!

Campanhas de Marketing Online

A estratégia utilizada para esse tipo de acompanhamento é introduzir em todos os links das campanhas de marketing online parâmetros com informações extras que serão utilizadas pelo Google Analytics para coletar e monitorar as estatísticas desejadas por nós. Esses parâmetros são: utm_medium, utm_source, utm_campaign e utm_content.

O utm_campaign define a qual campanha de marketing o link que estamos criando se refere. Uma campanha pode envolver diversas mídias e fontes de tráfego, como uma conjunto de propagandas em alguns sites, promoções em redes sociais e envío de newsletters, tudo fazendo parte de um único esforço de marketing. Os valores para utm_campaign são definidos por nós, mas aconselha-se a inclusão de algum formato de data para facilitar na análise dos relatórios. Podemos citar como exemplo: divulgacao-artigo-2011-11-20, newsletter-2011-12-07, twittada-2011-10-21, blog-rodrigoaguas e promocao-natal-2011.

O utm_medium é utilizado para definir a mídia utilizada. Ou seja, qual é o meio de comunicação ou mecanismo que estamos utilizando para atingir o nosso público e que conterá aquele link que estamos produzindo. Os valores podem ser definidos por nós mesmos, lembrando que eles serão exibidos nos relatórios. Alguns exemplos de utm_medium podem ser: email, banner, cpc (pay per click) e socialnetwork (compartilhamento em redes sociais).

O utm_source serve para definirmos exatamente de qual fonte pertence aquele tráfego, ou seja, considerando uma campanha online, em qual domínio aquele link foi publicado. Também podemos interpretar o utm_source como “quem” gerou aquele tráfego. Os valores também são definidos por nós mesmos. Exemplos de valores de utm_source podem ser: newsletter, twitter, facebook e rodrigoaguas.com.

O utm_content é um parâmetro opcional, mas muito interessante para experimentarmos estratégias ou abordagens distintas para uma mesma propaganda. Por exemplo, pequenas diferenças no texto enviado ou tamanho e posicionamento do banner. Essa técnica é chamada de teste A/B e tem como objetivo definir qual abordagem de propaganda dá melhor retorno. Seguem alguns exemplos: img-vertical-direita, banner-600×200, pergunta-retorica, afirmacao-positivista, texto-colorido e link-rodape.

Vamos então ao exemplo prático! Criarei uma campanha de divulgação no Twitter e no Facebook do último artigo desse blog, sobre virtualização de máquinas Ubuntu. O link original do artigo é http://www.rodrigoaguas.com/blog/virtualizacao-na-pratica-com-vmware-e-ubuntu/, mas tenho que acrescentar os parâmetros explicados acima para que o Google Analytics receba as informações sobre essa campanha de marketing. Utilizarei para divulgação no Twitter os seguintes valores:
Origem da campanha (utm_source): twitter
Mídia da campanha (utm_medium): social
Nome da campanha (utm_campaign): post-virtualizacao-ubuntu-2011-10-11

Então, o link a ser divulgado no Twitter fica:
http://www.rodrigoaguas.com/blog/virtualizacao-na-pratica-com-vmware-e-ubuntu/?utm_source=twitter&utm_medium=social&utm_campaign=post-virtualizacao-ubuntu-2011-10-11

Para o Facebook, basta trocarmos o valor do utm_source para facebook e temos o link a ser divulgado no Facebook:
http://www.rodrigoaguas.com/blog/virtualizacao-na-pratica-com-vmware-e-ubuntu/?utm_source=facebook&utm_medium=social&utm_campaign=post-virtualizacao-ubuntu-2011-10-11

Agora, podemos divulgá-los nas respectivas redes sociais:Divulgando campanha no TwitterCampanha de marketing no TwitterCampanha de marketing no Facebook

Feito isso, basta aguardar os acessos e acessar o Google Analytics para saber o retorno da sua campanha. Caso queira testar imediatamente o funcionamento dos links, você precisa selecionar um  intervalo de datas no Google Analytics que contenha o dia atual ou utilizar a nova funcionalidade de tempo real. Abaixo, seguem as telas do Google Analytics com os relatórios desse exemplo prático. Na primeira temos listado as campanhas dessa conta, nesse caso, apenas a campanha de divulgação do post de virtualização utilizado no exemplo. Na segunda vemos mais detalhes da campanha, como o número de acessos por origem. Por último, temos uma tela do relatório de visitas em tempo real.
Campanhas do Google AnalyticsDetalhes da Campanha no Google AnalyticsRelatório das Campanhas no Google Analytics em Tempo Real

Para facilitar essa tarefa de criação de links, o Google disponibilizou uma ferramenta bem simples para criação desses links. Espero que tenham gostado e façam bom uso! Abraços.