如何使"Shell"(ruby stdlib)"notify"功能静音


require 'shell'
sh = Shell.new
sh.verbose = false
sh.debug = false
print sh.system('date')

预期输出

Wed Nov 10 13:08:09 EST 2021

观测输出

shell(#<Th:0x00007fd016064058 run>): /bin/date
Wed Nov 10 13:08:09 EST 2021

不需要的线路来自Shell::CommandProcessor#notify

经过一些调查,Shell中似乎存在一个令人困惑的设计缺陷(或功能?(。最初,您似乎应该能够在Shell实例上突变verbosedebug,但事实证明根notify方法本身存在于中,而不是实例中。

因此,实例级别的设置将仅具有有限的效果,因为类方法Shell.notify将不知道实例设置。

解决方案-改为使用类级别设置:

Shell.verbose = false
Shell.debug   = false

输出现在只有:

Wed Nov 10 13:08:09 EST 2021

最新更新