def exec
      socket_fd = @socket.to_i
      ENV['RESQUED_SOCKET']      = socket_fd.to_s
      ENV['RESQUED_CONFIG_PATH'] = @config_paths.join(':')
      ENV['RESQUED_STATE']       = (@old_workers.map { |r| "#{r[:pid]}|#{r[:queue]}" }.join('||'))
      ENV['RESQUED_LISTENER_ID'] = @listener_id.to_s
      ENV['RESQUED_MASTER_VERSION'] = Resqued::VERSION
      log "exec: #{Resqued::START_CTX['$0']} listener"
      exec_opts = {socket_fd => socket_fd} # Ruby 2.0 needs to be told to keep the file descriptor open during exec.
      if start_pwd = Resqued::START_CTX['pwd']
        exec_opts[:chdir] = start_pwd
      end
      procline_buf = ' ' * 256 # make room for setproctitle
      Kernel.exec(Resqued::START_CTX['$0'], 'listener', procline_buf, exec_opts)
    end
def exec
      socket_fd = @socket.to_i
      ENV['RESQUED_SOCKET']      = socket_fd.to_s
      ENV['RESQUED_CONFIG_PATH'] = @config_paths.join(':')
      ENV['RESQUED_STATE']       = (@old_workers.map { |r| "#{r[:pid]}|#{r[:queue]}" }.join('||'))
      ENV['RESQUED_LISTENER_ID'] = @listener_id.to_s
      ENV['RESQUED_MASTER_VERSION'] = Resqued::VERSION
      log "exec: #{Resqued::START_CTX['$0']} listener"
      exec_opts = {socket_fd => socket_fd} # Ruby 2.0 needs to be told to keep the file descriptor open during exec.
      if start_pwd = Resqued::START_CTX['pwd']
        exec_opts[:chdir] = start_pwd
      end
      procline_buf = ' ' * 256 # make room for setproctitle
      Kernel.exec(Resqued::START_CTX['$0'], 'listener', procline_buf, exec_opts)
    end
Configure a new listener object.

 Runs in the master process.
 Public: As an alternative to #run, exec a new ruby instance for this listener.

 Runs in the master process.