2009-11-13 29 views
5

我對ruby相當陌生,並且正在配置IRB。我喜歡漂亮的印刷品(要求'pp'),但總是爲它打印pp來打印它很麻煩。我想要做的就是默認打印它,所以如果我有一個var,'myvar',並輸入myvar,它會自動調用pretty_inspect而不是常規檢查。我從哪裏開始?理想情況下,我可以在自動調用的.irbrc文件中添加一個方法。有任何想法嗎?Ruby將IRB默認配置爲Pretty_Inspect

謝謝!

回答

9

漂亮的印刷對象正是hirb是爲了做。 Theseposts解釋hirb如何將幾乎任何東西轉換爲ascii表。雖然hirb意味着每類進行配置,你可以有顯示爲表中的所有對象:

# 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也有行動hirb的例子。

1

當irb啓動時,它從您的$ HOME目錄中讀取.irbrc。如果您編輯(或創建)該文件並添加

require 'pp' 

它會在您每次啓動irb時加載。

檢出this addition也pretty_print方法列表。折騰,在你的.irbrc,你可以這樣做:在默認情況下IRB

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