Então você precisa fazer algo assim:
Veja, não há problema em aninhar thread.handle_interrupt e provavelmente necessário para alcançar a segurança e a defensividade que você está esperando.Alguns antecedentes sobre interrupções: no Ruby, as exceções podem ser aumentadas em qualquer lugar e a qualquer momento em um tópico de outros threads (incluindo o thread principal, é assim que o tempo limite funciona).Começando com um exemplo:
Neste exemplo, é possível que a exceção levantada pelo Thread.kill interrompe o meio do bloco Garantir.Não, porque quando está abaixo: não, não há uma operação que esteja ocorrendo ali, liberaria o GVL (por exemplo, ele também pode ser aninhado:
FYI Esteja ciente: lembre -se, o comportamento de interrupção é afetado apenas no bloco Handle_Interrupt.
Fonte: https://island94.org/2023/08/appropriately-using-rubys-thread-handle_interrupt