class Mnogootex::Job::Runner

Attributes

hid[R]
log_lines[R]

Public Class Methods

new(cl:, chdir:) click to toggle source
# File lib/mnogootex/job/runner.rb, line 10
def initialize(cl:, chdir:)
  @log_lines = []
  _, @stream, @thread = Open3.popen2e(*cl, chdir: chdir)
  @poller = start_poller
end

Public Instance Methods

alive?() click to toggle source
# File lib/mnogootex/job/runner.rb, line 16
def alive?
  @poller.alive?
end
count_lines() click to toggle source
# File lib/mnogootex/job/runner.rb, line 24
def count_lines
  return log_lines.size unless alive?
  @ticks = [@ticks || -1, log_lines.size - 1].min + 1
end
successful?() click to toggle source
# File lib/mnogootex/job/runner.rb, line 20
def successful?
  @poller.value.exitstatus.zero?
end

Private Instance Methods

start_poller() click to toggle source
# File lib/mnogootex/job/runner.rb, line 31
def start_poller
  Thread.new do
    until (line = @stream.gets).nil?
      log_lines << line
    end
    # NOTE: waits on @thread and returns its value
    @thread.value
  end
end