class Shellany::Sheller

def self._system_with_capture(*args)

def self._system_with_capture(*args)
  # We use popen3, because it started working on recent versions
  # of JRuby, while JRuby doesn't handle options to Kernel.system
  args = _shellize_if_needed(args)
  stdout, stderr, status = nil
  Open3.popen3(*args) do |_stdin, _stdout, _stderr, _thr|
    stdout = _stdout.read
    stderr = _stderr.read
    status = _thr.value
  end
  [status, stdout, stderr]
rescue Errno::ENOENT, IOError => e
  [nil, nil, "Guard::Sheller failed (#{e.inspect})"]
end