Системная команда постоянно терпит неудачу с кодом выхода 127 - PullRequest
1 голос
/ 06 марта 2012

У меня есть 2 метода в скрипте rake, оба из которых используют system "<SomeCommand>", один для вызова JSLint с файлом, который работает нормально.Один из них для вызова YUICompressor, который всегда завершается ошибкой с кодом ошибки 127.

Странно то, что я могу вызвать команду EXACT, когда запущен скрипт ruby, и он работает нормально, я передаю ему файл и выводитуменьшенная версия.Однако когда я запускаю его, думая, что скрипт ruby ​​всегда бомбит ...

В основном это выглядит так:

system java -jar c:/dump/tools/yuicompressor-2.7.4.jar c:/dump/src/input_file.js c:/dump/src/output_file.min.js

Я знаю, что это выглядит ужасно со всемиабсолютные пути, но именно так в настоящее время работает скрипт компоновки с абсолютными путями, но эта команда работает нормально, если я просто вызываю ее в командной строке, однако, когда я запускаю ее через Rake / Ruby, она просто бомбится ... но другой системный вызовJSLint работает нормально, однако вызывает пакетный файл по абсолютному пути ...

Не удается найти какую-либо информацию об этом в Интернете, кто-нибудь видит что-то странное в приведенном выше?

Просто чтобы подтвердить всефайлы существуют в соответствующих позициях.

Ответы [ 2 ]

3 голосов
/ 14 марта 2012

В случае, если кто-то еще сходит с ума из-за той же проблемы в Windows, кажется, что дело в том, что system не может обработать команду как одну большую строку, вам нужно разбить ее на аргументы, поэтому здесь Вот как я получил это работает:

# .. in paths is just used as a wildcard here
java_absolute_path = "c:/../java.exe"
yui_compressor_path = "c:/../yuicompressor-2.7.4.jar"
input_file = "c:/dump/src/input_file.js"
output_file = "c:/dump/src/output_file.min.js"
system java_absolute_path, "-jar", yui_compressor_path, input_file, "-o", output_file

Этот подход работает отлично.

1 голос
/ 07 ноября 2012

У меня была та же проблема с использованием команды mklink, даже с абсолютными путями и аргументами в качестве параметров.

Решением было использование команды call.

system (" call mklink .... ")

...