diff --git a/lib/delegate.rb b/lib/delegate.rb index 5ba94da..8472bb2 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -344,17 +344,15 @@ def __setobj__(obj) end end -def Delegator.delegating_block(mid) # :nodoc: - prok = lambda do |*args, &block| +def Delegator.delegating_code(mid) # :nodoc: + line = __LINE__+2 + src = <<~RUBY + ruby2_keywords def #{mid}(*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 + target.__send__(:'#{mid}', *args, &block) end + RUBY + [src, __FILE__, line] end # @@ -433,7 +431,7 @@ def __setobj__(obj) # :nodoc: class_eval(source.join(";"), __FILE__, __LINE__) special.each do |method| - define_method(method, Delegator.delegating_block(method)) + module_eval(*Delegator.delegating_code(method)) end protected(*protected_instance_methods)