Estou executando um aplicativo Ruby on Rails - dentro do aplicativo há um Ruby Gem que carreguei que determina a localização de um arquivo executável chamado pngcrush
. A maneira como ele faz isso é executando o comando which pngcrush
, que retorna /cygdrive/c/Windows/system32/pngcrush
. No entanto, quando a gem tenta emitir o comando usando uma chamada do sistema, `/cygdrive/c/Windows/system32/pngcrush somefile.jpg newfile.jpg`
ela falha. Parece que ele consegue ENCONTRAR o arquivo, mas não executá-lo, talvez porque esteja sendo executado dentro cmd
e não bash
.
ou seja, dentro cmd
eu digito: /cygdrive/c/Windows/system32/pngcrush
e recebo The system cannot find the path specified
. Quando cmd
digito bash
, no bash digito a mesma coisa, funciona. Não posso modificar a Gem porque ela é de autoria de outra pessoa.
Responder1
Eu acho que um programa como Ruby não segue caminhos como este /cygdrive/c/windows/, mas sim teria seu próprio ambiente, tente descobrir qual é seu ambiente e então tente executar algum outro comando e imprimir seu caminho, você deve entender como está chamando outros programas.
Responder2
Instale a versão cygwin do pngcrush em vez ou além da versão Windows do pngcrush. A versão cygwin deve funcionar corretamente.