gpt4 book ai didi

javascript - 在 ruby​​ 中将输出打印到标准输出时如何使用回调

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:53 24 4
gpt4 key购买 nike

我正在编写用于监视服务器状态的脚本。我可以用 javascript 编写代码,但我必须用 ruby​​ 编写它。

在 javascript 中,可以像这样使用 node.js 来完成。

var iostat = require('child_process').spawn("iostat", ["-w 1"]);
iostat.stdout.on('data', function (data) {
console.log(data);
});

此代码每秒执行 iostat 命令并输出到控制台。我怎样才能在 ruby 中实现同样的事情?换句话说,我想在 ruby​​ 打印 stdout 时使用回调。

最佳答案

可能有更好的方法来做到这一点,但您可以这样做:

module PutsWatcher
def puts(string)
super("***#{string}***")
end
end

$stdout.extend PutsWatcher

puts "here"
# => "***here***"

如果你在 IRB 或 Pry 中这样做有点奇怪,因为它们自己产生输出,在你自己的之上(即 nil 在你做 puts 之后) , 但这是从 pry 复制/粘贴的:

pry(main)> module PutsWatcher
pry(main)* def puts(string)
pry(main)* super("***#{string}***")
pry(main)* end
pry(main)* end
=> nil
pry(main)> $stdout.extend PutsWatcher
***=> #<IO:<STDOUT>>
***
pry(main)> puts "yo"
***yo***
***=> nil
***
pry(main)>

顺便说一句,我不建议您这样做...修补核心类通常不是一个好主意。我提到它纯粹是出于学术目的。

关于javascript - 在 ruby​​ 中将输出打印到标准输出时如何使用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7860088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com