Aidanc
Aidanc

Reputation: 7011

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 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.

Upvotes: 3

Views: 163

Answers (3)

Andrew Grimm
Andrew Grimm

Reputation: 81641

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?

Upvotes: 1

Jonathan
Jonathan

Reputation: 3263

Don't put quotes around your command.

Upvotes: 1

Ura
Ura

Reputation: 2283

Its executing your shell but can't find wine. Try setting the full path to where wine is installed.

which wine

Upvotes: 5

Related Questions