module RabbitJobs::MainLoop

Main process loop.

Public Instance Methods

log_daemon_error(error) click to toggle source
# File lib/rabbit_jobs/main_loop.rb, line 37
def log_daemon_error(error)
  return unless RabbitJobs.logger

  RabbitJobs.logger.fatal error
ensure
  abort(error.message)
end
main_loop() { || ... } click to toggle source
# File lib/rabbit_jobs/main_loop.rb, line 23
def main_loop
  loop do
    sleep 0.5
    next unless @shutdown

    RabbitJobs.logger.info 'Stopping.'
    if defined?(amqp_connection) # in worker only
      amqp_cleanup
    end
    yield if block_given?
    return true
  end
end
shutdown() click to toggle source
# File lib/rabbit_jobs/main_loop.rb, line 15
def shutdown
  @shutdown = true
end
shutdown!() click to toggle source
# File lib/rabbit_jobs/main_loop.rb, line 19
def shutdown!
  shutdown
end
startup() click to toggle source
# File lib/rabbit_jobs/main_loop.rb, line 4
def startup
  $stdout.sync = true

  @shutdown = false

  Signal.trap('TERM') { shutdown }
  Signal.trap('INT')  { shutdown! }

  true
end