Why does calling a Bash command from Ruby throw an error?
I'm attempting to execute the following bash command on some images using Ruby:
class Pingcrush
def initialize
Dir.foreach('drawable') do |item|
next if item == '.' or item == '..'
# do work on real items
if item.end_with?(".png") then
%x["wine pngcrush.exe -brute drawable/#{item} new/#{item}"]
end
end
end
end
Pingcrush.new
The directory I am in is the parent to both drawable
and new
, however, when when I attempt to run the script I always get 开发者_C百科the same error:
sh: wine pngcrush.exe -brute drawable/feed_cl.png new/feed_cl.png: not found
Why is this happening? I tried switching around the path I'm calling in Ruby and can't seem to make this work.
Its executing your shell but can't find wine. Try setting the full path to where wine is installed.
which wine
Don't put quotes around your command.
You have checked that wine pngcrush.exe -brute drawable/feed_cl.png new/feed_cl.png
works when you type it from the command line, haven't you?
精彩评论