私は Ruby on Rails アプリケーションを実行しています。アプリケーション内には、 という実行可能ファイルの場所を特定する Ruby Gem がロードされていますpngcrush
。これを行うには、コマンド を実行しwhich pngcrush
、 を返します/cygdrive/c/Windows/system32/pngcrush
。ただし、gem がシステム コールを使用してコマンドを発行しようとすると`/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 は他の誰かが作成したものなので、変更できません。
答え1
ruby のようなプログラムは、/cygdrive/c/windows/ のようなパスを取らないと思います。むしろ、独自の環境があり、その環境が何であるかを把握してから、他のコマンドを実行してパスを出力し、他のプログラムを呼び出す方法を理解する必要があります。
答え2
Windows バージョンの pngcrush の代わりに、または Windows バージョンの pngcrush に加えて、cygwin バージョンの pngcrush をインストールします。cygwin バージョンは正常に動作するはずです。