class Crabfarm::CrabtrapRunner
Constants
- CRABTRAP_START_TM
Public Class Methods
new(_config={})
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 10 def initialize(_config={}) @config = _config; @process = nil end
Public Instance Methods
is_running?()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 15 def is_running? not @process.nil? end
kill()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 42 def kill unless @process.nil? logger.info "Killing crabtrap (PID: #{@process.pid})" @process.stop 0 @process = nil logger.info "Crabtrap stopped" end end
mode()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 23 def mode @config.fetch(:mode, :pass).to_sym end
port()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 19 def port @config[:port] end
start()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 27 def start logger.info "Starting crabtrap in port #{port}" @process = spawn_crabtrap logger.info "Crabtrap started (PID: #{@process.pid})" end
stop()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 33 def stop unless @process.nil? logger.info "Stopping crabtrap (PID: #{@process.pid})" @process.stop @process = nil logger.info "Crabtrap stopped" end end
Private Instance Methods
crabtrap_cmd()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 67 def crabtrap_cmd cmd = [@config[:bin_path]] cmd << mode.to_s cmd << @config[:bucket_path] if mode != :pass cmd << "--port=#{port}" cmd << "--virtual=#{@config[:virtual]}" if @config.key? :virtual cmd << "--log=#{@config[:log_level].to_s.upcase}" cmd end
logger()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 88 def logger Crabfarm.logger end
spawn_crabtrap()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 53 def spawn_crabtrap proc = nil begin proc = Utils::Processes.start_logged_process 'crabtrap', crabtrap_cmd, logger Timeout::timeout(CRABTRAP_START_TM) { wait_for_server } rescue ChildProcess::LaunchError raise BinaryMissingError.new 'crabtrap', @config[:bin_path] rescue Timeout::Error proc.stop raise end proc end
wait_for_server()
click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 77 def wait_for_server loop do begin # TODO: improve waiting, making this kind of request could change crabtrap's stack Net::HTTP.get_response(URI.parse("http://127.0.0.1:#{port}/status")) break rescue end end end