Ruby has built-in timeout functionality in the standard library. Useful for killing tasks which might be long-running (or never-ending).
require 'timeout'
result = Timeout::timeout(5) do
sleep(6)
end
Here a Timeout::Error will be raised. If the timeout isn't triggered, the block's result will be stored in results.