diff --git a/lib/pp.rb b/lib/pp.rb index fcd33ba..5fd29a3 100644 --- a/lib/pp.rb +++ b/lib/pp.rb @@ -388,7 +388,7 @@ def pretty_print_cycle(q) # This method should return an array of names of instance variables as symbols or strings as: # +[:@a, :@b]+. def pretty_print_instance_variables - ivars = respond_to?(:instance_variables_to_inspect) ? instance_variables_to_inspect : instance_variables + ivars = respond_to?(:instance_variables_to_inspect, true) ? instance_variables_to_inspect || instance_variables : instance_variables ivars.sort end diff --git a/test/test_pp.rb b/test/test_pp.rb index 4a273e6..922ed37 100644 --- a/test/test_pp.rb +++ b/test/test_pp.rb @@ -146,7 +146,9 @@ def a.pretty_print_instance_variables() [:@b] end def test_iv_hiding_via_ruby a = Object.new - def a.instance_variables_to_inspect() [:@b] end + a.singleton_class.class_eval do + private def instance_variables_to_inspect() [:@b] end + end a.instance_eval { @a = "aaa"; @b = "bbb" } assert_match(/\A#\n\z/, PP.pp(a, ''.dup)) end