class Blender::Driver::Ruby
Public Instance Methods
execute(tasks, hosts)
click to toggle source
# File lib/blender/drivers/ruby.rb, line 23 def execute(tasks, hosts) tasks.each do |task| hosts.each do |host| cmd = run_command(task.command, host) if cmd.exitstatus != 0 and !task.metadata[:ignore_failure] raise ExecutionFailed, cmd.stderr end end end end
run_command(command, host)
click to toggle source
# File lib/blender/drivers/ruby.rb, line 34 def run_command(command, host) exit_status = 0 err = '' current_stdout = STDOUT.clone current_stderr = STDERR.clone begin STDOUT.reopen(stdout) STDERR.reopen(stderr) command.call(host) rescue StandardError => e err = e.message + "\nBacktrace:" + e.backtrace.join("\n") exit_status = -1 ensure STDOUT.reopen(current_stdout) STDERR.reopen(current_stderr) end ExecOutput.new(exit_status, '', err) end