Guía Ruby: Trabajando con la gema Twitter_Search
Continuamos con el tutorial de Ruby y en esta oportunidad voy a tomar una vía diferente para enseñar el lenguaje de programación mas divertido del mundo: Ruby.
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
Me parece que esto de tutorial tiene poco.
Y para los usuarios de otros SO? …
@Marce, qué crees que haga falta? Estamos en el segundo capítulo y empieza a ponerse bastante práctico. Por cierto que en el primero puedes ver algunas instrucciones de como usar Ruby tanto en Windows como en Mac. En Linux el proceso es igual de sencillo, así que no veo porque parece que esta dedicado solo a un sistema operativo.
@cvander al parecer vine a tiempo(Segundo Capítulo) se me hace muy interesante este lenguaje de programación lo he visto pero no a profundidad siempre es bueno tener este tipo de tutoriales, ya sea si se tienen conocimientos avanzados siempre es bueno una retroalimentación, y si no se sabe en hora buena aprender algo nuevo adelante @ivan. Lo estaré trabajando en Ubuntu y en Windows.
Marce que te gustaria ver en este tutorial? El codigo en todos los SO es igual. Si usas Mac o algun sabor de linux lo mas probable es que ya tengas ruby instalado. Si usas windows, te recomiendo que uses el 1 click installer:
http://rubyforge.org/projects/rubyinstaller/
@erickwebmaster cualquier cosa dejame saber. Estoy en foros del web para responder preguntas sobre cosas off-topic del tutorial!
el script esta muy facil de entender (no se si sea porque yo estudio ing de sistemas y ya halla visto programacion en la carrera) y eso que no crei que la llamada a una funcion de twitter fuera tan sencilla, me imagine la API distinta.
[…] También en Maestros del Web, un tutorial para comenzar con Ruby, usando la gema “Twitter Search”. Link […]
@exactlimon En verdad que tener Gemas (librerias) es un lujo. Gracias a la gema de Twitter todas las llamadas a la API son extraídas a metodos.
Puedes ver la implementacion de la Gema y como abstraen la API a llamadas de metodos en: http://github.com/dancroak/twitter-search/tree/master
a mi si me gusto bastante la mini guia, me parece que con un ejemplo sencillo y efectivo muestra varias cosas, me gustaria que publicaras mas material asi, algunas que otras gemas interesantes o scripts que hayas hecho, yo tengo poco tiempo aprendiendo este lenguaje y a veces es dificil encontrar material que sea interesante y que a la vez pueda entender, estuve viendo los ruby quiz por encima y la verdad me parece casi chino con mandarin, si tenes mas material como este seria interesante que lo publicaras, gracias!!!!!