注意:我是Ruby的新手,因此下面的术语和/或语法可能有误。
有没有办法在不阻塞其余代码的情况下观看STDOUT我的ruby进程?类似的东西:
$stdout.read_lines {|line| // This block is executed on each line logged via `puts`
do_something() if line == 'some interesting string'
}
puts 'Hello world'
puts 'some interesting string' // This would cause the `do_something` line to be executed
我已经看到了一些示例,其中可以以类似的方式创建和监视新进程,但是没有查看当前进程的stdout的情况。
非常感谢。
编辑:
具体来说,我希望在我的Vagrant设置中执行此行时执行一些代码:https://github.com/cogitatio/vagrant-hostsupdater/blob/master/lib/vagrant-hostsupdater/HostsUpdater.rb#L103
看起来消息已记录到@ui,我相信是此模块的实例https://github.com/hashicorp/vagrant/blob/master/lib/vagrant/ui.rb