RubyFlow : The Ruby Community Blog

Home   Submit   Sign Up   Log In   leaders   Twitter   RSS Feed  
 

jjb — 3 posts

http://jjb.cc

The way Ruby's Timeout#timeout kills threads when they have timed out introduces two problems. In this blog post, I describe these two problems and introduce my replacement library, sane_timeout.
When you call Thread#raise, the exception will be raised at whatever point of execution that thread happens to be at. In my blog post, The somewhat peculiar behavior of Ruby’s Thread#raise, I explore why that does make sense, but why it means you should only ever call Thread#raise if you have complete control over what code is inside that Thread and if it expects exception raises to be invoked by the outer context.
It turns out ensure blocks are executed inside a Thread even after the Thread is killed.

I write about it and show an example here.