2009-11-13 9 views
5

Soy bastante nuevo en ruby, y estoy configurando IRB. Me gusta imprimir bastante (requiere 'pp'), pero parece una molestia escribir siempre pp para imprimirlo bastante. Lo que me gustaría hacer es imprimirlo de forma bastante ordenada por defecto, así que si tengo una var, por ejemplo, 'myvar' y escribo myvar, automáticamente llama a pretty_inspect en lugar de a la inspección regular. ¿Dónde empiezo? Idealmente, podría agregar un método a mi archivo .irbrc que se llama automáticamente. ¿Algunas ideas?Ruby Configure IRB a Pretty_Inspect por defecto

Gracias!

Respuesta

9

objetos de impresión por defecto en Pretty IRB es exactamente lo que se hizo hirb hacer. Theseposts explica cómo hirb puede convertir casi cualquier cosa en una tabla ascii. Aunque hirb está destinado a ser configurado por clase, podría tener todos los objetos que se muestran como tablas:

# put this in ~/.irbrc 
require 'rubygems' 
require 'hirb' 
Hirb.enable :output=>{'Object'=>{:class=>:auto_table, :ancestor=>true}} 

# in irb 
>> %w{three blind mice} 
+-------+ 
| value | 
+-------+ 
| three | 
| blind | 
| mice | 
+-------+ 
3 rows in set 

>> 1..5 
+-------+ 
| value | 
+-------+ 
| 1  | 
| 2  | 
| 3  | 
| 4  | 
| 5  | 
+-------+ 
5 rows in set 

>> {:a=>1, :b=>2} 
+---+---+ 
| 0 | 1 | 
+---+---+ 
| a | 1 | 
| b | 2 | 
+---+---+ 
2 rows in set 

This related overflow solution tiene también un ejemplo de hirb en acción.

1

cuando arranca, lee .irbrc desde su directorio $ HOME. Si edita (o crea) ese archivo y agrega

require 'pp' 

, se cargará cada vez que inicie irb.

Consulte también this addition en las listas de métodos de pretty_print. Mezcle que en su .irbrc y que puede hacer:

>> 5.pm 
         %(arg1)   Fixnum 
         &(arg1)   Fixnum 
         *(arg1)   Fixnum 
        **(arg1)   Fixnum 
         +(arg1)   Fixnum 
        [email protected]()    Fixnum(Numeric) 
         -(arg1)   Fixnum 
        [email protected]()    Fixnum 
         /(arg1)   Fixnum 
        <<(arg1)   Fixnum 
        >>(arg1)   Fixnum 
        [](arg1)   Fixnum 
         ^(arg1)   Fixnum 
        abs()    Fixnum 
        ago(arg1, ...) Fixnum(ActiveSupport::CoreExtensions::Numeric::Time) 
       between?(arg1, arg2) Fixnum(Comparable) 
        byte()    Fixnum(ActiveSupport::CoreExtensions::Numeric::Bytes) 
        bytes()    Fixnum(ActiveSupport::CoreExtensions::Numeric::Bytes 

Cuestiones relacionadas