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.
Deja una respuesta