目前我正在运行这样的命令:
system("bundle exec rspec spec")
这很棒,因为它还支持互动,这意味着它允许我通过byebug
或binding.pry
进行互动。但是,我还希望获得system
调用的输出,这是不可能的。退出代码对我来说没用 - 我只需要输出命令。
如何实现与system
相同的功能,还可以访问其输出?我尝试过反叛但它不支持交互。
答案 0 :(得分:0)
您可以使用Open3.capture
:
require 'open3'
stdout, stderr, status = Open3.capture3('bundle exec rspec spec')
基于Open3.popen3
:
require 'open3'
require 'byebug'
Open3.popen3('ls -la .') do |stdin, stdout, stderr, wait_thr|
byebug
end