Module: Pry::Forwardable

Includes:
Forwardable
Included in:
Pry, Method, REPL, Testable::PryTester, WrappedModule::Candidate
Defined in:
lib/pry/forwardable.rb

Instance Method Summary collapse

Instance Method Details

#def_private_delegators(target, *private_delegates) ⇒ Object

Since Ruby 2.4, Forwardable will print a warning when calling a method that is private on a delegate, and in the future it could be an error: bugs.ruby-lang.org/issues/12782#note-3

That’s why we revert to a custom implementation for delegating one private method to another.



16
17
18
19
20
21
22
23
24
25
# File 'lib/pry/forwardable.rb', line 16

def def_private_delegators(target, *private_delegates)
  private_delegates.each do |private_delegate|
    define_method(private_delegate) do |*a, &b|
      instance_variable_get(target).__send__(private_delegate, *a, &b)
    end
  end
  class_eval do
    private(*private_delegates) # rubocop:disable Style/AccessModifierDeclarations
  end
end