Ruby Backtick, kernel.system, Exec, команда не удается
Вопрос
Я пытаюсь выполнить программу Java из моего кода Ruby.
Мой код - что -то вроде:
cmd = "java -cp \"path/lib/*\" com.blah.blah"
# %x[#{cmd}]
# `#{cmd}`
# Kernel.system(cmd)
Kernel.exec(cmd)
Моя проблема - это команда не успешно работает ни в коем случае. Я знаю, что %x, Backticks работает в подборке, поэтому, вероятно, некоторые переменные ENV отсутствуют. Однако я надеялся на Kernel.system, kernel.exec, чтобы добиться успеха.
Команда работает нормально, если я напрямую введет ее в оболочку. Любая помощь в отладке?
Спасибо!
Решение
Оказывается, проблема заключалась в том, что я не закрывал файлы, которые я создавал.
Очевидно, это было хорошо, когда я ссылался на него прямо из раковины или непосредственно от .sh, потому что сценарий Ruby уже вышел.
Однако, когда я бы вызвал это из сценария Ruby, он не сможет получить доступ к файлу и создаст проблемы.
Итог: закройте свои файлы, оставшуюся полдень работы!