Я запускаю приложение Ruby on Rails - внутри приложения есть загруженный мной Ruby Gem, который определяет местоположение исполняемого файла с именем pngcrush . Это происходит потому, что он запускает команду which pngcrush , которая возвращает /cygdrive/c/Windows/system32/pngcrush . Однако, когда гем пытается выдать команду, используя системный вызов `/cygdrive/c/Windows/system32/pngcrush somefile.jpg newfile.jpg` он не работает. Кажется, что он может НАЙТИ файл, но не выполнить его, возможно, потому что он выполняется внутри cmd а не в bash .

то есть, в cmd я набираю : /cygdrive/c/Windows/system32/pngcrush и получаю The system cannot find the path specified . Когда в cmd я печатаю bash , то в bash я печатаю то же самое, это работает. Я не могу изменить Gem, так как он создан кем-то другим.

2 ответа2

1

Установите версию pngcrush для cygwin вместо или в дополнение к версии pngcrush для Windows. Версия Cygwin должна работать правильно.

0

Я думаю, что такая программа, как ruby, не использует пути, подобные этому /cygdrive /c /windows /, скорее, она будет иметь свою собственную среду, попытаться выяснить, какова ее среда, а затем попытаться выполнить какую-то другую команду и напечатать ее путь. Нужно понимать, как это вызывает другие программы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .