Я не уверен, что это ошибка или новая функция Ruby 2.6, но после обновления 2.3 -> 2.6 мой терминал IRB не ведет себя как обычно и больше не может скрывать выходные данные. Раньше, когда я набирал точку с запятой, он ждал получения следующей инструкции без точки с запятой, чтобы запустить весь код и скрыть значения с точкой с запятой.
2.6.3 :008 > 1 + 1
=> 2
2.6.3 :009 > 1 + 1;
=> 2
2.6.3 :010 > (1 + 1);
=> 2
2.6.3 :011 > very_large_inspect_result;
=> [console keeps printing for ages)
Использование ruby-2.6.3 [ x86_64 ]
и терминала IRB от rails-5.1.6
Что я могу сделать, чтобы скрыть вывод команд? Цель состоит в том, чтобы избежать вывода огромных строк inspect
при возврате очень большой коллекции.
РЕДАКТИРОВАТЬ: я мог бы систематически добавлять 0 или что-то в этом роде после точки с запятой, но это кажется дешевым
2.6.3 :010 > (1 + 1); 0
=> 0
EDIT2: что произошло ранее в Ruby 2.3.x:
irb(main):001:0> puts 1;
irb(main):002:0* puts 2;
irb(main):003:0* puts 3
1
2
3
=> nil
;
и обычно предлагает несколько приятных дополнений по сравнению сirb
. - person Michael Kohl   schedule 28.08.2019out = $stdout and $stdout = File.open(File::NULL,'w')
, а затем, когда вы закончите, просто установите$stdout = out
для сброса выходного потока. По сути, это похоже на передачу в /dev/null. - person engineersmnky   schedule 28.08.2019