Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fixing Ruby's standard library Timeout
Failed to load latest commit information.
lib readme, gemspec, and directory structure
test define expectations for new behavior
.gitignore readme, gemspec, and directory structure
Rakefile readme, gemspec, and directory structure readme, gemspec, and directory structure
sane_timeout.gemspec readme, gemspec, and directory structure


TODO: Write a gem description


Add this line to your application's Gemfile:

gem 'sane_timeout'

And then execute:

$ bundle

Or install it yourself as:

$ gem install sane_timeout


TODO: Write usage instructions here

Open Questions

  • on line 69, I had tried doing x.join based on the standard lib doing the same thing with the y thread. I assumed that kill is not synchromous so it's necessary to wait for x to die. However, doing this causes many things to break. I haven't been able to figure out why.
  • related, is there any reason to kill y before returning x.value?

To Do

  • determine best way to install sane_timeout so that it replaces Timeout. possibly offer to modes, one where Timeout is overwritten, another where sane_timeout is invoked in its own namespace (SaneTimeout)

Code Improvement

  • remove the weird inner exception catching/filtering entirely?

Project Improvement

  • better name?
  • There is redundant code between test_timeout.rb and test_sane_timeout.rb because I wanted to annotate in the former and be DRY in the latter. Maybe this can somehow be improved.
  • hyphen or underscore?

odd design choice in standard lib:

  • same type of error is raised inside thread and outside when specified
  • when not specified, Exception is raised inside, StandardError is raised outside
Something went wrong with that request. Please try again.