summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2025-12-05 12:32:35 +0100
committergit <svn-admin@ruby-lang.org>2025-12-05 11:35:21 +0000
commit95ea3bd5ee9abc9e32c68e6a4fe2d795d853d907 (patch)
tree8162f9f2f1363deb743b45313f0602c876787f51
parent1cad20e2d5179b283cbb1aabe2496449f8edcbcb (diff)
[ruby/timeout] Only the timeout method should be public on the Timeout module
https://github.com/ruby/timeout/commit/cd51eac3ca
-rw-r--r--lib/timeout.rb10
-rw-r--r--test/test_timeout.rb6
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/timeout.rb b/lib/timeout.rb
index e1f0a4a78c..f173d028a3 100644
--- a/lib/timeout.rb
+++ b/lib/timeout.rb
@@ -133,6 +133,7 @@ module Timeout
end
end
end
+ private_class_method :ensure_timeout_thread_created
# We keep a private reference so that time mocking libraries won't break
# Timeout.
@@ -167,7 +168,7 @@ module Timeout
# Note that this is both a method of module Timeout, so you can <tt>include
# Timeout</tt> into your classes so they have a #timeout method, as well as
# a module method, so you can call it directly as Timeout.timeout().
- def timeout(sec, klass = nil, message = nil, &block) #:yield: +sec+
+ def self.timeout(sec, klass = nil, message = nil, &block) #:yield: +sec+
return yield(sec) if sec == nil or sec.zero?
raise ArgumentError, "Timeout sec must be a non-negative number" if 0 > sec
@@ -177,7 +178,7 @@ module Timeout
return scheduler.timeout_after(sec, klass || Error, message, &block)
end
- Timeout.ensure_timeout_thread_created
+ ensure_timeout_thread_created
perform = Proc.new do |exc|
request = Request.new(Thread.current, sec, exc, message)
QUEUE_MUTEX.synchronize do
@@ -197,5 +198,8 @@ module Timeout
Error.handle_timeout(message, &perform)
end
end
- module_function :timeout
+
+ private def timeout(*args, &block)
+ Timeout.timeout(*args, &block)
+ end
end
diff --git a/test/test_timeout.rb b/test/test_timeout.rb
index 01156867b0..e367df757c 100644
--- a/test/test_timeout.rb
+++ b/test/test_timeout.rb
@@ -4,6 +4,12 @@ require 'timeout'
class TestTimeout < Test::Unit::TestCase
+ def test_public_methods
+ assert_equal [:timeout], Timeout.private_instance_methods(false)
+ assert_equal [], Timeout.public_instance_methods(false)
+ assert_equal [:timeout], Timeout.singleton_class.public_instance_methods(false)
+ end
+
def test_work_is_done_in_same_thread_as_caller
assert_equal Thread.current, Timeout.timeout(10){ Thread.current }
end