Ruby simultaneidade IMAP IDLE - como enfrentar?

Estou tentando criar um aplicativo Web (privado, por enquanto) que utilizará conexões IMAP IDLE para mostrar os e-mails das pessoas assim que chegare

Estou tendo dificuldade em descobrir como invadir isso juntos - e como ele se encaixaria no meu servidor Heroku RoR.

Eu escrevi um script básico para conectar a um servidor IMAP e ocioso, parece algo assim (simplificado):

imap = Net::IMAP.new server, port, usessl
imap.login username, password
imap.select "INBOX"

imap.add_response_handler do |response|
  if resp.kind_of(Net::IMAP::UntaggedResponse) && resp.name == "EXISTS"
    # New mail recieved. Ping back and process.
  end
end

imap.idle
loop do
  sleep 10*60
  imap.renew_idle
end

Isto fará uma conexão com o servidor IMAP e começará a inatividade. Como você vê, isso está bloqueando o loop.

Gostaria de ter várias conexões IMAP ociosas ao mesmo tempo para meus usuários. Inicialmente, eu só queria colocar cada um deles em um thread, assim:

Thread.new do
  start_imap_idling(server, port, usessl, username, password)
end

Ainda não sou tão afiado em threads, mas com esta solução ainda terei que bloquear meu thread principal para aguardar os threads? Então, se eu fizer algo como:

User.each do |user|
  Thread.new do
    start_imap_idling(server, port, usessl, username, password)
  end
end

loop do
  # Wait
end

Isso funcionaria, mas não sem o loop na parte inferior para permitir a execução dos thread

Minha pergunta é como melhor derretê-lo com meu aplicativo Ruby On Rails no Heroku? Não posso estar bloqueando o thread com esse último loop - então como faço para executar isso? Outro servidor? Um dinamômetro mais - talvez um trabalhador? Eu tenho lido um pouco sobre a Event Machine - isso poderia resolver meu problema? Se sim, como devo escrever isso?

Outra coisa é que eu gostaria de poder adicionar novos clientes imap e remover os atuais em tempo real. Como isso pode parecer? Algo com uma fila, talvez?

Qualquer ajuda e comentários são muito apreciado