Rubino Configurare IRB a Pretty_Inspect per impostazione predefinita
-
20-09-2019 - |
Domanda
Sono abbastanza nuovo a Ruby, e sto configurando IRB. Mi piace abbastanza di stampa (require 'PP'), ma sembra una seccatura di digitare sempre pp per la sua bella stamparlo. Quello che mi piacerebbe fare è rendere abbastanza di stampa di default, quindi se ho un var, diciamo, 'myvar', e il tipo di myvar, chiama automaticamente pretty_inspect al posto del normale ispezionare. Dove posso iniziare? Idealmente, vorrei essere in grado di aggiungere un metodo per il mio file .irbrc che viene chiamato automaticamente. Tutte le idee?
Grazie!
Soluzione
oggetti di stampa graziosi per impostazione predefinita in IRB è esattamente quello che hirb è stato fatto per fare. Questi messaggi spiegano come hirb in grado di convertire praticamente qualsiasi cosa in una tabella 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
Questa soluzione di overflow relativo anche ha un esempio di hirb in azione.
Altri suggerimenti
quando si avvia IRB, si legge .irbrc dalla directory $ HOME. Se si modifica (o creare) quel file e aggiungere
require 'pp'
verrà caricato ogni volta che si avvia IRB.
questa aggiunta per pretty_print metodo elenca anche. Toss che nel vostro .irbrc e si può fare:
>> 5.pm
%(arg1) Fixnum
&(arg1) Fixnum
*(arg1) Fixnum
**(arg1) Fixnum
+(arg1) Fixnum
+@() Fixnum(Numeric)
-(arg1) Fixnum
-@() 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