Issue #7087 has been updated by kosaki (Motohiro KOSAKI). Following patch fix this issue, I think. diff --git a/lib/monitor.rb b/lib/monitor.rb index 07394b5..30701c7 100644 --- a/lib/monitor.rb +++ b/lib/monitor.rb @@ -215,6 +215,10 @@ module MonitorMixin end alias synchronize mon_synchronize + def sleep(timeout = nil) + @mon_mutex.sleep timeout + end + # # Creates a new MonitorMixin::ConditionVariable associated with the # receiver. ---------------------------------------- Feature #7087: ::ConditionVariable#wait does not work with Monitor because Monitor#sleep does not exist https://bugs.ruby-lang.org/issues/7087#change-34771 Author: rklemme (Robert Klemme) Status: Assigned Priority: Low Assignee: matz (Yukihiro Matsumoto) Category: lib Target version: next minor See program attached to bug #7086: timeout_4 always throws: ERROR: method "timeout_4": #<NoMethodError: private method `sleep' called for #<Monitor:0x87e49f8>> $ irb19 -r monitor irb(main):001:0> Monitor.new.method(:sleep) => #<Method: Monitor(Kernel)#sleep> irb(main):002:0> Monitor.instance_methods.grep /sleep/ => [] -- http://bugs.ruby-lang.org/