Quiero que algo como esto se vea bien:
>> ProductColor.all
=> [#<ProductColor id: 1, name: "White", internal_name: "White", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 2, name: "Ivory", internal_name: "Ivory", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 3, name: "Blue", internal_name: "Light Blue", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 4, name: "Green", internal_name: "Green", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">]
Esto no funciona:
>> ProductColor.all.inspect
=> "[#<ProductColor id: 1, name: \"White\", internal_name: \"White\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">, #<ProductColor id: 2, name: \"Ivory\", internal_name: \"Ivory\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">, #<ProductColor id: 3, name: \"Blue\", internal_name: \"Light Blue\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">, #<ProductColor id: 4, name: \"Green\", internal_name: \"Green\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">]"
Y tampoco esto:
>> ProductColor.all.to_yaml
=> "--- \n- !ruby/object:ProductColor \n attributes: \n name: White\n created_at: 2009-06-10 04:02:44\n updated_at: 2009-06-10 04:02:44\n id: \"1\"\n internal_name: White\n attributes_cache: {}\n\n- !ruby/object:ProductColor \n attributes: \n name: Ivory\n created_at: 2009-06-10 04:02:44\n updated_at: 2009-06-10 04:02:44\n id: \"2\"\n internal_name: Ivory\n attributes_cache: {}\n\n- !ruby/object:ProductColor \n attributes: \n name: Blue\n created_at: 2009-06-10 04:02:44\n updated_at: 2009-06-10 04:02:44\n id: \"3\"\n internal_name: Light Blue\n attributes_cache: {}\n\n- !ruby/object:ProductColor \n attributes: \n name: Green\n created_at: 2009-06-10 04:02:44\n updated_at: 2009-06-10 04:02:44\n id: \"4\"\n internal_name: Green\n attributes_cache: {}\n\n"
Pensamientos?
ruby-on-rails
irb
Tom Lehman
fuente
fuente
YAML::ENGINE.yamler = 'syck'
..irbrc
otras herramientas de la consola u otras configuraciones de la consola (como ser un desarrollador contratado con acceso limitado a un contenedor / servidor de producción) )Deberías probar hirb . Es una gema hecha para dar formato a objetos bonitos en la consola ruby. Su sesión de script / consola se vería así:
Puede obtener más información sobre hirb en su página de inicio .
fuente
La impresión impresionante también es agradable si quieres un objeto sangrado. Algo como:
Para integrarlo de forma predeterminada con el IRB / carriles de palanca / consola, añadir a su
~/.irbrc
o~/.pryrc
archivo:fuente
Simplemente funciona bien!
Fuente: https://stackoverflow.com/a/4830096
fuente
También se debe tener en cuenta que puede usar:
para imprimir en formato Json en lugar de Yaml
fuente
Hola, también puedes probar esto en tu script / consola si
no funciona para ti
Prueba esto:
luego
fuente
Tuve algunos problemas para que funcione, así que agregaré mis dos centavos a awesome_print, agregue esto a su Gemfile, preferiblemente en
:development
gem 'awesome_print', require: 'ap'
entonces en
rails console
tu puedes hacer
> ap Model.all
Eso es. Sin embargo, también puedes agregara su ~ / .irbrc, de esta manera se requerirá impresión impresionante cada vez que abra la consola y simplemente puede hacer
Model.all sin la necesidad de escribir ap
fuente
También puede intentar lo siguiente para un grupo de objetos
Esto te dará una salida mucho más agradable , como
Invocar
to_yaml
atributos en lugar del objeto en sí le evita ver el contenido completo del objeto en la salidaO
puts Object.last.attributes.to_yaml
para un solo objetoLa taquigrafía también está disponible:
y Object.last.attributes
fuente
Creo que esta solución es la más precisa. Deberías probar esto:
Esto le dará una salida súper agradable en comparación con el formato YAML:
fuente
Usa
irbtools
gema.Formateará automáticamente la salida de la consola y obtendrá toneladas de excelentes funciones.
fuente
Es posible que desee definir el método de inspección de ProductColor para devolver algo que le parezca agradable. Por ejemplo:
Después de lo cual el resultado de ProductColor.all se mostrará como algo así como [<1 - Blanco (Blanco)>, ...]. Por supuesto, debe ajustar el método de inspección a sus necesidades, para que muestre toda la información que necesita en el estilo que desee.
Editar: también si el problema era la falta de saltos de línea en la salida, puede intentar
que debe insertar saltos de línea cuando sea apropiado
fuente
require 'pp'
no es posible enrails console --sandbox
. Por alguna razón me salefalse
cuando trato de exigirpp
. ¡Uy! parece quepp
ya se requiere por defecto enrails console
. Acabo de hacerlopp Model.connection_handler
y obtuve una gran salida impresa. Gracias.require
regresafalse
, eso solo significa que el archivo ya se ha cargado.inspect
no se muestra cuando se hace justoProductColor.all
?Para agregar a la sugerencia de Alter Lago para usar AwesomePrint, si no puede / no debe / no desea agregar la gema awesome_print al Gemfile de su proyecto, haga lo siguiente:
gem install awesome_print
Edite ~ / .irb.rc y agregue esto:
$LOAD_PATH << '/Users/your-user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib'
require 'awesome_print'
(Asegurándose de que la ruta y la versión sean correctas, por supuesto)
fuente