Ruby настраивает IRB к Pretty_Inspect по умолчанию

Одиночные элементы имеют свое использование, но нужно быть осторожным в использовании и представлении их, потому что они слишком легки для злоупотребления , трудный к действительно модульному тесту, и легко создать круговые зависимости на основе двух одиночных элементов что доступы друг друга.

Это полезно однако, поскольку, когда Вы хотите быть уверенными, что все Ваши данные синхронизируются через несколько экземпляров, например, конфигурации для распределенного приложения, например, могут полагаться на одиночные элементы, чтобы удостовериться, что все соединения используют тот же актуальный набор данных.

5
задан user151975 13 November 2009 в 20:48
поделиться

2 ответа

Хорошая печать объектов по умолчанию в irb - это именно то, для чего был создан hirb . Эти сообщения объясняют, как 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

Это связанное решение переполнения также имеет пример работы hirb.

9
ответ дан 13 December 2019 в 22:10
поделиться

при запуске irb читает .irbrc из вашего каталога $ HOME. Если вы отредактируете (или создадите) этот файл и добавите

require 'pp'

, он будет загружаться каждый раз при запуске irb.

Посмотрите это дополнение в списки методов pretty_print. Добавьте это в свой .irbrc, и вы можете сделать:

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

1
ответ дан 13 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: