class Prb::CommandRunner

Public Class Methods

new(opts) click to toggle source
# File lib/prb/command_runner.rb, line 3
def initialize(opts)
  @opts = Opts.new(opts)
end

Public Instance Methods

resume() click to toggle source
# File lib/prb/command_runner.rb, line 22
def resume
  send_request('resume')
end
start() click to toggle source
# File lib/prb/command_runner.rb, line 7
def start
  if running?(@opts.port)
    puts "A prb server is already running."
    exit(1)
  end

  Process.daemon() if @opts.daemonize?

  app = Prb::Server.new(@opts)
  Rack::Server.start(
    app: app,
    Port: @opts.port
  )
end
stop() click to toggle source
# File lib/prb/command_runner.rb, line 26
def stop
  send_request('stop')
end

Private Instance Methods

running?(port) click to toggle source
# File lib/prb/command_runner.rb, line 39
def running?(port)
  Timeout::timeout(1) do
    begin
      s = TCPSocket.new('0.0.0.0', port)
      s.close
      return true
    rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
      return false
    end
  end
end
send_request(endpoint) click to toggle source
# File lib/prb/command_runner.rb, line 32
def send_request(endpoint)
  uri = URI.parse("http://0.0.0.0:#{@opts.port}/#{endpoint}")
  Net::HTTP.get_response(uri)
rescue
  nil
end