Usando la consola de Ruby on Rails

Consejos y funcionalidades más útiles en la consola de Ruby on Rails

A continuación mostraré algunos trucos y consejos varios de más utilidad cuando se trabaja desde la consola en el desarrollo de aplicaciones web con Ruby on Rails.

Para abrir la consola a partir de Rails 3 podemos ejecutar el comando:

rails console

o script/console en versiones anteriores.

Método map/collect

Una de las mejores características de Ruby es cómo trata a las colecciones de objetos y lo fácil que es manipularlas.

La instrucción map y collect tienen la misma funcionalidad: A partir de una colección de datos devuelven un nuevo array con los datos manipulados.

Además, gracias a la navegabilidad que nos ofrece ActiveRecords para obtener información relacionada de distintos modelos, podemos obtener resultados asombrosos rápidamente. Véamos un ejemplo.

Si tenemos una colección de Posts:

Post.all
=> [#Post id: 125, title: "Título de este post"...,
#Post id: 4501, title: "Otro título"...,
#Post id: 5410, title: "Ruby on rails"...,
#Post id: 10105, title: "Ejemplo de título"...]

Para obtener sólo los ids, podemos ejecutar:

Post.all.map(&:id)
=> [125, 4501, 5410, 10105]

Si queremos ver los títulos:

Post.all.map(&:title)
=> ["Título de este post", "Otro título", "Ruby on rails", "Ejemplo de titulo"]

Si deseamos obtener más información de un objeto en concreto podemos hacerlo del siguiente modo:

Post.all.map{|i| puts i.user.name}

Mostrará el nombre de cada usuario que ha escrito un mensaje.

Select

El método select es también muy importante. Podemos seleccionar sólo los elementos de una colección que cumplan cierta condición:

Post.all.map{|i| i.user.name}.select{|i| i.eql?("Lorena")}

De la colección de nombres de usuarios devolverá la que tenga de nombre "Lorena"

Benchmark en tiempo real

Rails trae un conjunto de herramientas para hacer pruebas de benchmarking de la aplicación, pero si desde la consola queremos realizar una prueba rápida podemos utilizar el método realtime de la clase Benchmark, por ejemplo:

foo =""; puts Benchmark.realtime {1000.times{
foo += "eeeeeeee"}
}
=> 0.00336003303527832

> > foo =""; puts Benchmark.realtime {1000.times{
> > foo << "eeeeeeee"}
> > }
> > => 0.000760078430175781

En este caso vemos que utilizar la instrucción << es mucho más rápido que +=.

Acceder al último valor ejecutado

Una forma rápida de guardar el contenido ejecutado en la instrucción anterior desde la consola es utilizar el símbolo '_'.

"cadena de texto"
=> "cadena de texto"
var = _
puts var
cadena de texto

Mostrar las consultas SQL en la consola

Para ver las consultas SQL que se ejecutan al utilizar los modelos ActiveRecord, podemos ejecutar esta instrucción en la misma consola en "Rails 3":

ActiveRecord::Base.logger = Logger.new(STDOUT)