Как выполнить .sh файл в ruby ​​на рельсах - PullRequest
4 голосов
/ 20 апреля 2019

Я пытаюсь выполнить .sh файл в действии index rails.

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

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

1 Ответ

3 голосов
/ 20 апреля 2019

Вы захотите взглянуть на класс Open3, в частности capture2 или capture3:

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

Как вы можете видеть выше capture3 даст вам stdout, stderr и status вашего скрипта.Пока capture2 просто вернет stdout и statusOpen3 есть и другие полезные функции, на которые стоит обратить внимание.

Чтобы понять, почему exec и system ведут себя так, как есть, вы можете прочитать этот SO-ответ: Ruby,Разница между exec, системой и% x () или обратными галочками

...