From 2c0ac33214545ad7d9e982584aeb1581adbfbd13 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Dec 2025 14:16:49 +0900 Subject: [PATCH 1/2] Revert "Allow use of DelegateClass in ractor" This reverts commit 6e0f2b31f0f4a2a942f3c1daad1bb64852fe6815. --- lib/delegate.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/delegate.rb b/lib/delegate.rb index 358c4fc..c2fe827 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -344,15 +344,17 @@ def __setobj__(obj) end end -def Delegator.delegating_code(mid) # :nodoc: - line = __LINE__+2 - src = <<~RUBY - ruby2_keywords def #{mid}(*args, &block) +def Delegator.delegating_block(mid) # :nodoc: + prok = lambda do |*args, &block| target = self.__getobj__ - target.__send__(:'#{mid}', *args, &block) + target.__send__(mid, *args, &block) + end + prok.ruby2_keywords + if defined?(Ractor.shareable_proc) + Ractor.shareable_proc(&prok) + else + prok end - RUBY - [src, __FILE__, line] end # @@ -431,7 +433,7 @@ def __setobj__(obj) # :nodoc: class_eval(source.join(";"), __FILE__, __LINE__) special.each do |method| - module_eval(*Delegator.delegating_code(method)) + define_method(method, Delegator.delegating_block(method)) end protected(*protected_instance_methods) From d7f3866d893913704bd412505350fa55b41375ab Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Dec 2025 14:17:23 +0900 Subject: [PATCH 2/2] Reapply "Merge pull request #52 from ruby/revert-49" This reverts commit 02e4b58b615d0dd83a6af5cd7c2b8861724011ee. --- lib/delegate.rb | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lib/delegate.rb b/lib/delegate.rb index c2fe827..ba53cc9 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 #