ruby backtick, kernel.system, exec, команда не выполняется - PullRequest
0 голосов
/ 01 декабря 2011

Я пытаюсь выполнить 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.

Команда работает нормально, если я набираю ее непосредственно в оболочке.Любая помощь в отладке этого?

Спасибо!

1 Ответ

0 голосов
/ 02 декабря 2011

Оказывается, проблема в том, что я не закрывал создаваемые файлы.

Очевидно, это было хорошо, когда я вызывал его прямо из оболочки или напрямую из .sh, потому что скрипт ruby ​​уже завершился.

Однако, когда я вызову это из сценария Ruby, он не сможет получить доступ к файлу и создаст проблемы.

Итог: закройте свои файлы, иначе потеряете половину рабочего дня!

...