Desativação do Google Reader e a Descoberta do IFTTT

Há muito tempo venho cadastrando feeds de sites de meu interesse no Google Reader para tentar acompanhá-los, mas nunca consegui realmente incluir essa atividade na minha rotina. Os itens não lidos iam se acumulando até que se tornavam tão numerosos que eu precisava usar o “Marcar todos como lidos” e novamente ver a contagem de itens não lidos crescendo, assim sucessivamente. Uma situação frustrante para alguém que realmente gostaria de acompanhar aqueles sites mas não conseguia. Atribuo essa dificuldade principalmente a duas causas: quantidade exagerada de sites cadastrados e o caráter reativo dos leitores tradicionais de feeds, como o Google Reader.

A solução para quem deseja acompanhar mais sites do que consegue é clara: focar nos prioritários. Mas o outro aspecto não parecia tão simples de resolver, eu só via as novidades dos feeds quando, e se, abrisse o leitor, ou seja, elas não surgiam de maneira espontânea para mim. Juntando a essa insatisfação a notícia da desativação do Google Reader, resolvi sanear meus feeds e procurar uma ferramenta que se adequasse melhor às minhas necessidades. Foi então que descobri o IFTTT.

IFTTT é a abreviação de If This Then That. Essa expressão representa uma estrutura bastante familiar para programadores, onde This é uma condição/evento (“trigger”) para executar a ação (action) That. O site chama cada regra nesse formato de receita (“recipe”). Nas receitas são utilizadas peças básicas de integração com outras plataformas ou mecanismos (por exemplo, feeds, facebook, twitter, Google Drive, email, dropbox etc) para criar rotinas que serão executadas de acordo com a condição estabelecida.

Voltando à questão inicial, do leitor de feeds, é muito fácil utilizar esse serviço para criar um leitor de feeds proativo, basta criar uma receita onde no This seja utilizado um canal de Feed apontando para o endereço do feed desejado e definir que a cada novo item que surgir no feed seja enviado um e-mail para a sua conta através da ação Email.

O IFTTT também permite o compartilhamento de “receitas” entre os usuários, sendo possível encontrar bastante coisa legal lá (mas seja prudente ou sua caixa de entrada vai virar uma bagunça). Algumas receitas criadas por mim enviam diariamente para o seu email os quadrinhos do Dilbert, as tirinhas do Vida de Programador, fotos do dia da NASA ou National Geographic etc.

O serviço oferece uma variedade enorme de triggers e ações, sendo possível criar rotinas para os mais diversos propósitos como, por exemplo, fazer backup de fotos suas publicadas em redes sociais ou ser alertado via SMS de terremotos de grande magnitude. Ainda há muito o que inventar, a criatividade é o limite.

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

Instalando RVM, Ruby e Rails no Ubuntu

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