Как выполнить .sh файл в рубине на рельсах

Обновить

April 2019

Просмотры

16 раз

1

Я пытаюсь выполнить .sh файл в индексных рельсах действия.

Я стараюсь exec"sh app/controllers/myscript.sh" это выполнить его в терминале , то остановите сервер! Я не знаю , почему. И я стараюсь output = system"sh app/controllers/myscript.sh"это возвращает истину в браузере не то , что находится в файле .sh

Заранее спасибо :)

1 ответы

0

You'll want to look at the Open3 class, specifically capture2 or capture3:

require 'open3'
stdout, stderr, status = Open3.capture2("sh app/controllers/myscript.sh")

As you can see above capture3 will get you the stdout, stderr, and status of your script run. While capture2 will just return stdout and status. There are other useful functions in Open3 which are worth looking at.

To understand why exec and system are behaving the way they are, you can read this SO answer: Ruby, Difference between exec, system and %x() or Backticks