Pry (Ruby REPL): как отключить автоматическое эхо

Поскольку Ruby поддерживает параллельные присваивания и автоматический возврат значений из функций, почти каждое присваивание и запуск метода заканчиваются созданием вывода при работе с REPL, такими как IRB и Pry.

Обычно я предотвращаю этот эффект эха, ставя точку с запятой в конце каждой строки. Например:

JSON::parse(very_long_json_string);

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

Есть ли способ отключить этот эффект эха по умолчанию в Pry? Как упоминалось в комментариях ниже (@Stefan), того же можно добиться в IRB, установив conf.echo = false.


person retrography    schedule 04.09.2015    source источник
comment
В IRB вы можете установить conf.echo = false   -  person Stefan    schedule 04.09.2015
comment
@Stefan Приятно знать! Есть ли способ добиться того же на Pry?   -  person retrography    schedule 04.09.2015
comment
Попробуйте это JSON::parse(very_long_json_string); ноль;   -  person Alex Tonkonozhenko    schedule 04.09.2015


Ответы (1)


В ИРБ есть:

conf.echo = false

В Pry вы можете заменить объект печати на пустой процесс:

_pry_.config.print = proc {}

Вам придется сохранить старый объект печати, чтобы восстановить его.

В обоих случаях результат последнего выражения по-прежнему доступен через _

person Stefan    schedule 04.09.2015
comment
Блин, ты опередил меня на 2 минуты :D - person mhutter; 04.09.2015
comment
@Stefan Это отличный трюк, я ценю. Есть ли способ обратить это вспять? Например, сохранив или перезагрузив исходный процесс? Таким образом, я могу создать пользовательскую команду Pry. - person retrography; 04.09.2015
comment
О, я нашел это: _pry_.config.print = Pry::DEFAULT_PRINT - person retrography; 04.09.2015