 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Adding a Timeout to a Long-Running Operation | ||
|---|---|---|
| Code | Expected | Actual | 
| require 'timeout'
before = Time.now
begin
  status = Timeout.timeout(5) { sleep }
rescue Timeout::Error
  puts "I only slept for #{Time.now-before} seconds."
end | I only slept for 5.035492 seconds. | I only slept for 5.011398 seconds. | 
| def count_for_five_seconds
  $counter = 0
  begin
    Timeout::timeout(5) { loop { $counter += 1 } }
  rescue Timeout::Error
    puts "I can count to #{$counter} in 5 seconds."
  end
end
count_for_five_seconds | I can count to 2532825 in 5 seconds. | I can count to 2575012 in 5 seconds. | 
| $counter | 2532825 | 2575012 |