Module: SafeShell

Defined in:
lib/safe_shell.rb,
lib/safe_shell/version.rb

Constant Summary collapse

VERSION =
"1.0.1"

Class Method Summary collapse

Class Method Details

.execute(command, *args) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/safe_shell.rb', line 2

def self.execute(command, *args)
  opts = args.last.kind_of?(Hash) ? args.pop : {}
  read_end, write_end = IO.pipe
  new_stdout = opts[:stdout] ? File.open(opts[:stdout], "w+") : write_end
  new_stderr = opts[:stderr] ? File.open(opts[:stderr], "w+") : write_end
  pid = fork do
    read_end.close
    STDOUT.reopen(new_stdout)
    STDERR.reopen(new_stderr)
    exec(command, *(args.map { |a| a.to_s }))
  end
  write_end.close
  output = read_end.read
  Process.waitpid(pid)
  read_end.close
  output
end

.execute?(*args) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
# File 'lib/safe_shell.rb', line 20

def self.execute?(*args)
  execute(*args)
  $?.success?
end