module Kernel # Override raises an error if _cmd_ returns a non-zero exit status. # Returns stdout + stderr if _cmd_ succeeds. Note that these are simply concatenated; STDERR is not inline. def ` cmd stdout, stderr = '' begin status = Open4::popen4(cmd) do |pid, stdin_stream, stdout_stream, stderr_stream| stdout = stdout_stream.read stderr = stderr_stream.read end raise stderr.strip if !status.success? rescue Exception => e raise "'#{cmd}' failed with: '#{e.message}'" end return stdout + stderr end alias_method :system!, :system # Override raises an error if _cmd_ returns non-zero exit status. # Returns true if _cmd_ succeeds. system!() preserves standard subshell handling (no exceptions; returns false on fail) def system cmd `#{cmd}` return true end end