Pry(Ruby REPL):如何关闭自动回声

时间:2015-09-04 15:15:55

标签: ruby read-eval-print-loop irb pry

由于Ruby支持并行赋值和函数自动返回值,因此在处理IRB和Pry等REPL时,几乎每个赋值和方法运行都会产生输出。

通常我会在每行的末尾加一个分号来阻止这种回声效果。例如:

private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
    // Start at the beginning of the text
    firstCharOnPage = 0;
}

private void printDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
    // Clean up cached information
    richTextBoxEx1.FormatRangeDone();
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    firstCharOnPage = richTextBoxEx1.FormatRange(false, e, firstCharOnPage, richTextBoxEx1.TextLength);
    // check if there are more pages to print
    if (firstCharOnPage < richTextBoxEx1.TextLength)
        e.HasMorePages = true;
    else
        e.HasMorePages = false;
}

private void printToolStripButton_Click(object sender, EventArgs e)
{
    //Print the contents here
    printDocument1.Print();
}

这通常会阻止REPL回声。但是当处理非常大的枚举时,即使一个错误也可以产生足够的输出以使屏幕上出现混乱,并且在我有反射到达中断之前将所有有用的命令历史记录从内存中取出。

有没有办法在Pry中默认关闭此回声效果?正如下面的评论(@Stefan)中所提到的,通过设置JSON::parse(very_long_json_string); 可以在IRB中实现相同的目标。

1 个答案:

答案 0 :(得分:4)

在IRB中有:

conf.echo = false

在Pry中你可以用空的proc替换print object

_pry_.config.print = proc {}

您必须存储旧的打印对象才能恢复它。

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

获得