class ImageServer::Spawner
Attributes
configuration[RW]
pid[RW]
server[RW]
started[RW]
Public Class Methods
new(configuration: ImageServer.configuration)
click to toggle source
# File lib/image_server/spawner.rb, line 8 def initialize(configuration: ImageServer.configuration) @configuration = configuration end
Public Instance Methods
give_feedback()
click to toggle source
# File lib/image_server/spawner.rb, line 40 def give_feedback logger.info("image server is starting on port #{configuration.port}...") while starting logger.info "image server took #{seconds} seconds to start" end
kill_at_exit()
click to toggle source
# File lib/image_server/spawner.rb, line 31 def kill_at_exit at_exit do if pid logger.info 'image server is stopping' `pkill -TERM -P #{pid}` # also stops child processes end end end
seconds()
click to toggle source
# File lib/image_server/spawner.rb, line 45 def seconds '%.3f' % (Time.now - started) end
start()
click to toggle source
# File lib/image_server/spawner.rb, line 12 def start unless started? self.started = Time.now self.pid = fork do $stderr.reopen('/dev/null') $stdout.reopen('/dev/null') server_exec.run end kill_at_exit give_feedback end end
started?()
click to toggle source
# File lib/image_server/spawner.rb, line 25 def started? Net::HTTP.get_response(URI.parse("#{configuration.upload_host}:#{configuration.port}/status_check")) rescue StandardError nil end
starting()
click to toggle source
# File lib/image_server/spawner.rb, line 49 def starting response = started? return false unless response raise 'Unable to start image server' unless response.kind_of?(Net::HTTPSuccess) false rescue Errno::ECONNREFUSED true end
Private Instance Methods
logger()
click to toggle source
# File lib/image_server/spawner.rb, line 66 def logger @@logger ||= ImageServer::Logger.new end
server_exec()
click to toggle source
# File lib/image_server/spawner.rb, line 60 def server_exec log_file = File.join(configuration.log_directory, 'image_server.log') error_file = File.join(configuration.log_directory, 'image_server_errors.log') exec("#{configuration.path_to_binary} --port=#{configuration.port} --outputs='' server > #{log_file} 2> #{error_file}") end