撬(Ruby REPL):如何关闭自动回显

ret*_*phy 1 ruby irb read-eval-print-loop pry

由于Ruby支持并行分配和从函数自动返回值,因此在使用IRB和Pry等REPL时,几乎所有分配和方法运行最终都会创建输出。

通常,我通过在每行的末尾放置一个分号来防止这种回声。例如:

JSON::parse(very_long_json_string);
Run Code Online (Sandbox Code Playgroud)

通常,这可以防止REPL回波。但是,当处理非常大的枚举时,即使是一个错误也可能会产生足够的输出,从而在屏幕上造成混乱,并在我有足够的能力休息之前将所有有用的命令历史记录移出内存。

有没有一种方法可以在Pry中默认关闭此回声效果?如以下注释(@Stefan)中所述,通过设置,可以在IRB中实现相同的功能conf.echo = false

Ste*_*fan 6

在IRB中有:

conf.echo = false
Run Code Online (Sandbox Code Playgroud)

在Pry中,您可以将打印对象替换为空的proc:

_pry_.config.print = proc {}
Run Code Online (Sandbox Code Playgroud)

您必须存储旧的打印对象才能还原它。

在两种情况下,最后一个表达式的结果仍可通过 _