2009-11-13 9 views
5

Sono abbastanza nuovo da ruby ​​e sto configurando l'IRB. Mi piace la stampa carina (richiede 'pp'), ma sembra una seccatura digitare sempre pp per farlo stampare bene. Quello che mi piacerebbe fare è renderlo piuttosto stampato di default, quindi se ho una var, diciamo 'myvar', e scrivo myvar, richiama automaticamente pretty_inspect al posto del controllo regolare. Dove posso iniziare? Idealmente, sarei in grado di aggiungere un metodo al mio file .irbrc che viene chiamato automaticamente. Qualche idea?Ruby Configura IRB a Pretty_Inspect per impostazione predefinita

Grazie!

risposta

9

oggetti di stampa graziosi per impostazione predefinita in IRB è esattamente ciò che è stato fatto hirb fare. Theseposts spiega come hirb può convertire praticamente qualsiasi cosa in un tavolo ascii. Anche se hirb è destinata ad essere configurato per classe, si potrebbe avere tutti gli oggetti visualizzati come tabelle:

# 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 ha anche un esempio di hirb in azione.

1

all'avvio di irb, legge .irbrc dalla directory $ HOME. Se modifichi (o crei) quel file e aggiungi

require 'pp' 

verrà caricato ogni volta che si avvia irb.

Consultare this addition anche per gli elenchi dei metodi pretty_print. Toss che nel vostro .irbrc e si può fare:

>> 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 

Problemi correlati