通过背包调用rake任务时,其输出将被抑制:
task :two do
puts 'two'
end
task :one do
puts 'one'
`rake two`
end
-bash> bundle exec rake one
one
在通过.invoke
调用时显示输出:
task :one do
puts 'one'
Rake::Task['two'].invoke
end
-bash> bundle exec rake one
one
two
为什么用反引号抑制输出,如何显示?
上面是一个人为的示例,但最终我希望能够在Heroku上运行本身运行远程rake任务的本地rake任务,并且希望实时查看其输出 >(因为远程任务是交互式,即它通过puts
提出问题,并等待通过$stdin.gets.chomp
的用户/标准输入):
task :one do
puts 'one'
`heroku run rake my_app:reset_user_passwords --app #{MY_APP_NAME}`
end
答案 0 :(得分:1)
反引号return the standard output of command,因此,如果您想查看结果,只需致电puts
:
task :one do
puts 'one'
puts `heroku run rake my_app:reset_user_passwords --app #{MY_APP_NAME}`
end
如果要进行交互式执行,可以尝试使用IO#expect