Ruby-在控制台上显示backtick输出

Ruby-在控制台上显示backtick输出,ruby,ansible,ansible-playbook,Ruby,Ansible,Ansible Playbook,在Ruby中,我使用backticks来执行(许多)shell命令。如何在控制台上显示shell命令输出 再详细一点。如果像下面这样运行(ansible)命令,我会在控制台上获得大量的滚动输出: % ansible-playbook config.yml -e foo=bar -e baz=qux PLAY [base setup] ************************************************************** TASK [setup] ****

在Ruby中,我使用backticks来执行(许多)shell命令。如何在控制台上显示shell命令输出

再详细一点。如果像下面这样运行(ansible)命令,我会在控制台上获得大量的滚动输出:

% ansible-playbook config.yml -e foo=bar -e baz=qux

PLAY [base setup] **************************************************************

TASK [setup] *******************************************************************
ok: [10.99.66.210]

... etc, etc
# cmd = ansible-playbook config.yml -e foo=bar -e baz=qux
`#{cmd}`
但是,如果我从Ruby执行相同的命令(使用backticks),我在控制台上看不到任何输出:

% ansible-playbook config.yml -e foo=bar -e baz=qux

PLAY [base setup] **************************************************************

TASK [setup] *******************************************************************
ok: [10.99.66.210]

... etc, etc
# cmd = ansible-playbook config.yml -e foo=bar -e baz=qux
`#{cmd}`
这很不幸,因为我希望看到输出以便调试。我可以将Ruby脚本的输出重定向到一个(有尾的)日志文件,但是我希望看到它的输出

例如,我的解决方案是:

# cmd = ansible-playbook config.yml -e foo=bar -e baz=qux
puts cmd
if execute then
  puts "Executing..."
  Dir.chdir("..") do
    Open3.popen2e(cmd) do |i,oe,t|
      oe.each { |line| puts line }
    end
  end
end

我认为您不需要使用
{}
插入
cmd
,您需要
放置`{cmd}`
,但我不确定在完成之前它是否会显示任何内容。否则使用