Skip to content
Fixing Ruby's standard library Timeout
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


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
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.