Todo el tutorial será código que puede ser ejecutado desde Ruby. Puedes ver el script completo al final del articulo pero para empezar tenemos que instalar la gema twitter_search. Para esto hacemos:

sudo gem install dancroak-twitter-search -s http://gems.github.com
=begin

Ahora si, empezamos.
Vamos a construir un pequeño script que va a twitter,
busca los tweets que contengan cierta palabra y los
imprimimos en pantalla.

Todos los conceptos los vamos a ir explicando sobre la marcha.

Y este bloque de codigo que vez en pantalla es un comentario
de varias lineas.

=end


# Esto es un comentario de una sola linea.
# Abajo incluimos la gema de twitter y rubygems.

require 'rubygems'
require 'twitter_search'

Lo que hacemos en la siguiente linea de código viene directamente desde la documentación de la gema de twitter_search. Básicamente creamos un nuevo TwitterSearch::Client (mas sobre esto en el futuro) llamado ‘Un Navegador robot’ y se lo asignamos a @navegador.

En esta linea de código vemos el dinamismo de ruby ya que no tuvimos que definir el tipo de variable de @buscador. Lo hacemos “On the fly”

Mira @navegador como tu navegador web. Es el agente que usamos para conectarnos al API de twitter.


@navegador = TwitterSearch::Client.new 'Un Navegador Robot'

Ya que tenemos un ‘navegador’ o vehículo para ir a twitter, vamos a buscar los tweets que contenga “Maestros del Web”. Para esto tenemos que crear una nueva variable que llamaremos @tweets y encadenamos el método query a nuestro navegador. Tenemos que pasarle lo que vamos a buscar al método .query.


@tweets = @navegador.query 'Maestros del Web'

Tenemos todos los tweets dentro del objecto @tweets. Nos toca iterar sobre este objeto para ver cada tweet. Esto lo vamos a lograr con un método llamado .each. Each es traducido como “cada uno” y tenemos que decirle como llamaremos a cada objento dentro de @tweets. En este caso, tweet.

La traducción de este iterador seria algo como:

A cada uno de los objectos dentro de @tweets, llamalo tweet. Haciendo esto, tenemos acceso a un solo objeto “tweet” y no a una colección de objectos @tweets. Esto nos permite hacer cosas como tweet.from_user o tweet.text.


@tweets.each do |tweet|
# Para mostrar algo en la consola usamos puts
# y podemos hacer operaciones matemáticas en strings.
# como multiplicar * 100 veces.
puts "*" * 100
puts "Username: " + tweet.from_user
puts "Tweet: " + tweet.text
puts "*" * 100

end

En menos de 10 lineas de código hemos creado un pequeño script que usa una gema de ruby y va al API de twitter a buscar todos los tweets que contengan la frase maestros del web. Todo el “heavy lifting” de usar el API de twitter lo hace la gema, pero para eso están. I LOVE MY GEMS! A la misma vez, hemos aprendido sobre como crear comentarios de una y múltiples lineas.

Lo mas importante de este pequeño script es el uso del iterador .each ya que nos da acceso a la colección de objetos dentro de @tweets y este patrón se repite muchísimo en el lenguaje.

Para los mas curiosos, les recomiendo que modifiquen un poco el iterador e inspeccionen un poco el objeto @tweets. Esto lo logramos con el método .inspec.

@tweets.each do |tweet|
puts tweet.inspect
end

Toda la documentacion de la gema de twitter_search la puedes encontrar aqui. Y el script entero:

require 'rubygems'
require 'twitter_search'

@navegador = TwitterSearch::Client.new 'Un Navegador Robot'

@tweets = @navegador.query 'maestros del web'

@tweets.each do |tweet|
  puts "*" * 100
  puts "Username: " + tweet.from_user
  puts "Tweet: " + tweet.text
  puts "*" * 100
end

Y así terminamos otro capítulo más de la guía Hispana de Ruby. En breve otro capítulo y estaremos pendientes de sus comentarios.

Descargar el ejemplo: twitter.rb

Ir al siguiente capítulo: La clase Array en Ruby