Publicado por Eliézer Pimentel em 04 de August de 2009
Construa daemons Ruby seguros com RobustThread
Clique aqui para adicionar ao del.icio.us | Nenhum comentário - Deixe o seu agora!
Quando estiver rodando um daemon Ruby que executa código em loop, se o processo for interrompido durante a execução, você pode ter problemas caso o código não trate todas as exceções corretamente ou se o loop não for interrompido corretamente. A RobustThread é uma classe Ruby criada por Jared Kuolt para a criação de threads, que ajuda a aliviar este problema.
Ela permite criar loggers, exceções de processos e callbackspara as threads, expondo a thread atual através de um atributo. Em princípio, ela usa o log padrão, mas pode ser configurada para usar outro objeto Logger.
Você pode colocar marcadores em loops ou threads, que pode ser útil para registro em logs e durante debugging. Mas talvez o mais importante seja que, ao usar RobustThread.loop, você pode mudar a maneira que o loop funciona para que ele seja interrompido de maneira apropriada na próxima iteração antes da thread ser encerrada:
RobustThread.loop(:seconds => x) do do_something end
Você pode instalar a RobustThread com gem install robustthread, ou baixe o código-fonte do Github. Jared contextualiza o problema e oferece mais alguns exemplos em seu blog.



