• Skip to main content
  • Skip to header right navigation
  • Skip to site footer

Antonio Pérez

Full Stack developer

  • Home
  • Sobre mi
  • Podcast
  • Blog
  • Contacto
desarrollo full stack

Como mostrar los resultados de la consola de rails de forma amigable

You are here: Home / Ruby on Rails / Como mostrar los resultados de la consola de rails de forma amigable
30/10/2018 by Antonio Pérez

Normalmente la consola de rails es uno de esos elementos que todos los desarrolladores tenemos que estar continuamente mirando en desarrollo, pero muchas veces ver estos resultados es bastante oscuro, como por ejemplo, cuando ves algo así:

2.3.1 :001 > Property.all
  Property Load (250.3ms)  SELECT `properties`.* FROM `properties`
 => #<ActiveRecord::Relation [#<Property id: 1, office_id: 2, latitude: #<BigDecimal:7fe969bd1a28,'0.42673445E2',18(27)>, longitude: #<BigDecimal:7fe969bd1870,'-0.5993375E1',18(27)>, created_at: "2016-10-23 11:04:40", updated_at: "2018-10-23 11:04:45", agent_id: 4, enabled: true, person_id: 48, price_sale: 
#<BigDecimal:7fe969bd23b0,'0.43387E6',9(18)>, price_rent: 
#<BigDecimal:7fe969bd2a18,'0.1084E4',9(18)>, community_costs: #<BigDecimal:7fe969bd30a8,'0.155E3',9(18)>, traspass: true, traspassing_price: #<BigDecimal:7fe969bd3878,'0.1985E4',9(18)>, fee_rent_id: 6, last_floor: false, equipment: false, surface_built_m2: #<BigDecimal:7fe96a22fd70,'0.322E3',9(18)>, surface_useful: #<BigDecimal:7fe96a22fac8,'0.95E2',9(18)>, minimum_renting_surface: 
#<BigDecimal:7fe96a22f8c0,'0.343E3',9(18)>, surface_total: #<BigDecimal:7fe96a22f6e0,'0.289E3',9(18)>, surface_for_building: #<BigDecimal:7fe96a22f4d8,'0.101E3',9(18)>, minimum_selling_surface: 
#<BigDecimal:7fe96a22f168,'0.135E3',9(18)>, max_to_be_built_floors: 9, height: #<BigDecimal:7fe96a22ef38,'0.393E3',9(18)>, bedroom_number: 5, bathroom_number: 3, bathroom_type_id: 3, bathroom_location_id: 2, bathroom_disabled_people: true, surface_plot: #<BigDecimal:7fe96a22e8f8,'0.334E3',9(18)>, chalet_floors: 1, energy_clasification_id: 7, energy_delivery: ...

Pues si, efectivamente, encontrar los datos aquí es, cuando menos, tedioso (por no decir un coñazo que da ganas de cortarse las venas claro…)

Pero gracias a Dios tenemos opciones mejores para ver los datos en la consola de rails, vamos a ver algunas:

Mostrar resultados con yaml

La forma más sencilla es formatear la salida con Yaml, para esto no tienes ni que instalar ninguna gema, tan solo tienes que escribir:

> y Model.all

Y esto, te dará una salida algo mejor formateada, aunque como ves, sigue siendo bastante lioso mostrar los datos así:

!ruby/object:User
  raw_attributes:
    id: 1
    email: 
    encrypted_password: "$2a$11$BEAuR7M6LrAyJFhSYRUMXOXIZW15EAp.P3pxOo0JAXDIRR0j7ey6K"
    reset_password_token:
    reset_password_sent_at:
    remember_created_at:
    sign_in_count: 3
    current_sign_in_at: &4 2018-10-30 09:26:23.000000000 +01:00
    last_sign_in_at: &5 2018-10-23 21:19:30.000000000 +02:00
    current_sign_in_ip: "::1"
    last_sign_in_ip: "::1"
    created_at: &6 2018-10-16 13:59:59.000000000 +02:00
    updated_at: &7 2018-10-30 09:26:23.000000000 +01:00
    name: Admin
    role: 0
    partner_id: 1
    enabled: 1
  attributes: !ruby/object:ActiveRecord::AttributeSet
    attributes: !ruby/object:ActiveRecord::LazyAttributeHash
      delegate_hash:
        id: !ruby/object:ActiveRecord::Attribute::FromDatabase
          name: id
          value_before_type_cast: 1
          type: &3 !ruby/object:ActiveModel::Type::Integer
            precision:
            scale:
            limit: 4
            range: !ruby/range
              begin: -2147483648
              end: 2147483648
              excl: true

Mostrar resultados con Awesome Print

Esta opción os digo que es normalmente la que yo uso, es realmente sencillo de instalar, tan solo añade a tu gemfile:

# Gemfile

gem 'awesome_print'


# y ahora en el terminal

bundle install

Con esto ya tienes instalada la gema, ahora, reinicia el terminal y tan solo poner:

> Model.all 

Y tendrás una preciosa salida con este formato

[
    [0] #<User:0x007fe95a1e8e08> {
                            :id => 1,
                         :email => "user@example.com",
            :encrypted_password => "$2a$11$BEAuR7M6LrAyJFhSYRUMXOXIZW15EAp.P3pxOo0JAXDIRR0j7ey6K",
          :reset_password_token => nil,
        :reset_password_sent_at => nil,
           :remember_created_at => nil,
                 :sign_in_count => 3,
            :current_sign_in_at => Tue, 30 Oct 2018 09:26:23 CET +01:00,
               :last_sign_in_at => Tue, 23 Oct 2018 21:19:30 CEST +02:00,
            :current_sign_in_ip => "::1",
               :last_sign_in_ip => "::1",
                    :created_at => Tue, 16 Oct 2018 13:59:59 CEST +02:00,
                    :updated_at => Tue, 30 Oct 2018 09:26:23 CET +01:00,
                          :name => "Admin",
                          :role => "superadmin",
                    :partner_id => 1,
                       :enabled => true
    },
    [1] #<User:0x007fe95a1fbcd8> {
                            :id => 2,
                         :email => "otha_thiel@ziemann.name",
            :encrypted_password => "$2a$11$2SPuxOtAzW/RjYRkgheRBO0wwadVS8VljaIphw2I2qWFOd3HLICaG",
          :reset_password_token => nil,
        :reset_password_sent_at => nil,
           :remember_created_at => nil,
                 :sign_in_count => 5,
            :current_sign_in_at => Tue, 23 Oct 2018 21:23:10 CEST +02:00,
               :last_sign_in_at => Tue, 23 Oct 2018 21:21:42 CEST +02:00,
            :current_sign_in_ip => "::1",
               :last_sign_in_ip => "::1",
                    :created_at => Tue, 16 Oct 2018 14:05:40 CEST +02:00,
                    :updated_at => Tue, 23 Oct 2018 21:23:10 CEST +02:00,
                          :name => "María Vergara Hernandes",
                          :role => "partner",
                    :partner_id => 2,
                       :enabled => true

Mucho mejor eh? Donde va a parar! Vamos a ver otra opción más, esta es especialmente interesante para mostrar datos de tablas de forma resumida

Mostrar resultados con Hirb

Para utilizar Hirb, al igual que con awesome_print tenemos que instalar la gema igual que siempre:

# Gemfile

gem 'hirb'

Para usar esta gema también es muy simple, tan solo te vas a la consola de rails y ejecutas:

> Hirb.enable

Y ya obtienes la request que hagas con formato de tabla.

> Movie.select("title, year, genre,director").first
  Movie Load (0.3ms)  SELECT  title, year, genre,director FROM "movies" ORDER BY "movies"."id" ASC LIMIT ?  [["LIMIT", 1]]
+----+--------+------+-------------------+------------+
| id | title  | year | genre             | director   |
+----+--------+------+-------------------+------------+
|    | Batman | 1989 | Action, Adventure | Tim Burton |
+----+--------+------+-------------------+------------+
1 row in set

Espero que te haya resultado interesante ¿conoces tu alguna otra gema para mostrar este tipo de datos? Déjamela en los comentarios.

Categoría: Desarrollo Back End, linea de comandos, Ruby on Rails

About Antonio Pérez

Previous Post:Generar nueva clave RSA y copiarla al clipboard
Next Post:Cómo crear un proyecto nuevo con Angular.Novedades angular 7

Reader Interactions

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ahora también en youtube

Ve al canal

Copyright © 2023 · Antonio Pérez · All Rights Reserved · Powered by Mai Theme