Sha256: 79600b0436e9844b01df4d319fda8cc9b525ea4e46cf66a05cfcd595d4f9840b
Contents?: true
Size: 1.74 KB
Versions: 1
Compression:
Stored size: 1.74 KB
Contents
module Buildbox class Client def initialize(options) @options = options @interval = 5 end def start exit_if_already_running Buildbox.logger.info "Starting client..." register_client begin daemonize if @options[:daemon] pid_file.save loop do reload_configuration Buildbox::Worker.new.process wait_for_interval end rescue => e Buildbox.logger.error "#{e.class.name}: #{e.message}" e.backtrace.each { |line| Buildbox.logger.error line } api.crash(e) ensure pid_file.delete end end def stop Buildbox.logger.info "Stopping client..." Process.kill(:KILL, pid_file.delete) end private def daemonize if @options[:daemon] Process.daemon Buildbox.logger = Logger.new(Buildbox.root_path.join("buildbox.log")) end end def register_client worker_uuid = Buildbox.configuration.worker_uuid response = api.register(:uuid => worker_uuid, :hostname => `hostname`.chomp) Buildbox.configuration.update :worker_uuid, response.payload[:uuid] end def reload_configuration Buildbox.configuration.reload end def wait_for_interval Buildbox.logger.debug "Sleeping for #{@interval} seconds" sleep(@interval) end def exit_if_already_running if pid_file.exist? Buildbox.logger.error "Process (#{pid_file.pid} - #{pid_file.path}) is already running." exit 1 end end def worker end def api @api ||= Buildbox::API.new(:api_key => Buildbox.configuration.api_key) end def pid_file @pid_file ||= Buildbox::PidFile.new end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
buildbox-0.0.4 | lib/buildbox/client.rb |