Запретить консоль рельсов распечатать объект в конце цикла


86

Если я, скажем, перебрал все экземпляры данной модели и выведу что-то из каждого, в конце irb все равно распечатает весь объект.

Если объект занимает сотни строк, мне придется пройти очень много времени, прежде чем я увижу то, что действительно искал. Есть ли способ отключить это в консоли рельсов?

Ответы:


112

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

big_result(input); 0

3
это собственно то, что я хотел.
— dsp_099 08

4
Я часто так делаюbig_result(input); nil
— nroose

102

Позвоните, conf.echo = falseи он не распечатает возвращаемое значение. Это работает для любого сеанса irb, а не только для консоли Rails.

Если вы хотите сделать его постоянным, добавьте его в конфигурацию irb.

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc

Что бы вы сделали, если бы хотели, чтобы это всегда было по умолчанию?
— Питер Берг,

@Accipheran Я думаю, что включение его в инициализаторы Rails сработает.
— lulalala

Спасибо за ответ, я на самом деле обнаружил, что об этом IRB.conf[:ECHO] = falseпозаботился простой бросок строки в моем файле .irbrc. Это, конечно, также выключает эхо во всех моих сеансах irb, но меня это устраивает.
— Питер Берг

41

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

record.each do |r|
  puts r.properties
end; nil

Или это также может быть число, если вы хотите уменьшить количество набора текста. Но это может сбивать с толку в сценариях, о которых я не могу думать.

record.each do |r|
  puts r.properties
end; 0

Ты самый лучший!
— Sickrandir
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.