如何在Ruby on Rails中执行.sh文件

4

我正在尝试在Rails的index操作中执行.sh文件。

我尝试使用exec"sh app/controllers/file.sh",它会在终端中执行,然后停止服务器!我不知道为什么。 而我尝试用output = system"sh app/controllers/file.sh",它在浏览器中返回true,而不是.sh文件中的内容。

提前感谢:)

1个回答

4
你需要查看 Open3 类,尤其是 capture2capture3 方法。
require 'open3'
stdout, stderr, status = Open3.capture3("sh app/controllers/myscript.sh")

如上所述,capture3 可以获取脚本运行的 stdoutstderrstatus。而 capture2 只返回 stdoutstatus。在 Open3 中还有其他有用的函数值得研究。

要了解为什么 execsystem 的行为方式是这样的,可以阅读这个 SO 回答:Ruby 中 exec、system、%x() 或反引号之间的区别


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接