Ruby Configure IRB para Pretty_inspect por padrão
-
20-09-2019 - |
Pergunta
Sou bastante novo no Ruby e estou configurando o IRB. Eu gosto de impressão bonita (requer 'PP'), mas parece um aborrecimento sempre digitar PP para que ele imprimi -lo. O que eu gostaria de fazer é torná -lo bastante impresso por padrão; portanto, se eu tiver um VAR, digamos, 'myvar' e digite myvar, ele chama automaticamente Pretty_inspect em vez do inspecivo regular. Por onde começo? Idealmente, eu seria capaz de adicionar um método ao meu arquivo .irbrc que é chamado automaticamente. Alguma ideia?
Obrigado!
Solução
Pretty Printing Objects por padrão no IRB é exatamente o que hirb foi feito para fazer. Esses Postagens Explique como o HIRB pode converter praticamente qualquer coisa em uma tabela ASCII. Embora o HIRB seja configurado por classe, você pode ter todos os objetos exibidos como tabelas:
# 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
Esta solução de transbordamento relacionada Também tem um exemplo de HIRB em ação.
Outras dicas
Quando o IRB começa, ele lê .Irbrc a partir do seu diretório inicial. Se você editar (ou criar) esse arquivo e adicionar
require 'pp'
Ele será carregado cada vez que você iniciar o IRB.
Verificação de saída esta adição para o método pretty_print listas também. Jogue isso no seu .irbrc e você pode fazer:
>> 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