Class: PerfectQueue::ExecRunner
- Inherits:
-
Object
- Object
- PerfectQueue::ExecRunner
- Defined in:
- lib/perfectqueue/engine.rb
Instance Method Summary collapse
-
#initialize(cmd, task) ⇒ ExecRunner
constructor
A new instance of ExecRunner.
- #kill ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(cmd, task) ⇒ ExecRunner
Returns a new instance of ExecRunner.
117 118 119 120 121 122 123 |
# File 'lib/perfectqueue/engine.rb', line 117 def initialize(cmd, task) @cmd = cmd @task = task @iobuf = '' @pid = nil @kill_signal = :TERM end |
Instance Method Details
#kill ⇒ Object
144 145 146 147 |
# File 'lib/perfectqueue/engine.rb', line 144 def kill Process.kill(@kill_signal, @pid) @kill_signal = :KILL end |
#run ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/perfectqueue/engine.rb', line 125 def run cmdline = "#{@cmd} #{Shellwords.escape(@task.id)}" IO.popen(cmdline, "r+") {|io| @pid = io.pid io.write(@task.data) rescue nil io.close_write begin while true io.sysread(1024, @iobuf) print @iobuf end rescue EOFError end } if $?.to_i != 0 raise "Command failed" end end |