From ce4ca7cb07be681ba47a8996e6192bf0f54d787e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 17 Dec 2025 19:51:13 +0900 Subject: [PATCH] Revert "Allow use of DelegateClass in ractors" This reverts commit cad194260bebd8472bd68e4ac0cf7c1f9c990e2d. IO-like objects should not be ractor-shareable. --- lib/delegate.rb | 10 ++-------- test/test_delegate.rb | 16 ---------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/lib/delegate.rb b/lib/delegate.rb index 7c403b2..0ac4487 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -345,16 +345,10 @@ def __setobj__(obj) end def Delegator.delegating_block(mid) # :nodoc: - prok = lambda do |*args, &block| + lambda do |*args, &block| target = self.__getobj__ target.__send__(mid, *args, &block) - end - prok.ruby2_keywords - if defined?(Ractor.shareable_proc) - Ractor.shareable_proc(&prok) - else - prok - end + end.ruby2_keywords end # diff --git a/test/test_delegate.rb b/test/test_delegate.rb index ca170e3..ff7998e 100644 --- a/test/test_delegate.rb +++ b/test/test_delegate.rb @@ -390,20 +390,4 @@ def test(a, k:) [a, k]; end a = DelegateClass(k).new(k.new) assert_equal([1, 0], a.test(1, k: 0)) end - - def test_delegate_class_can_be_used_in_ractors - omit "no Ractor#value" unless defined?(Ractor) && Ractor.method_defined?(:value) - require_path = File.expand_path(File.join(__dir__, "..", "lib", "delegate.rb")) - raise "file doesn't exist: #{require_path}" unless File.exist?(require_path) - assert_ractor <<-RUBY - require "#{require_path}" - class MyClass < DelegateClass(Array);end - values = 2.times.map do - Ractor.new do - MyClass.new([1,2,3]).at(0) - end - end.map(&:value) - assert_equal [1,1], values - RUBY - end end