機略戦記

Maneuver warfare

Pryの結果に表示されるのって「実行したコードの戻り値を`#inspect`したもの」であってるんだっけ

結論

  • あってる(たぶん)

調べ方

  • 適当なClassを作って評価してみる。
  • これが戻り値の#inspectなんじゃないかと思っており、それを確かめたい。
> class AnyClass ; end
#=> nil
> AnyClass
#=> AnyClass
  • #inspectを上書き。実行されたら#callerを吐き出すようにしてみる。
> class AnyClass ; def self.inspect ; caller.to_s ; end ; end
#=> :inspect
  • #callerが吐出されたのでやはり#inspectが呼ばれているようだ。
  • コールスタックを追ってみようかと思ったけど深いからやめた。
> AnyClass
=> [
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:541:in `pretty_print'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:187:in `block in pp'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:273:in `block (2 levels) in group'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:300:in `nest'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:272:in `block in group'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:285:in `group_sub'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:271:in `group'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:187:in `pp'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/color_printer.rb:34:in `pp'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/color_printer.rb:17:in `block in pp'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:146:in `guard_inspect_key'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/color_printer.rb:17:in `pp'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry.rb:23:in `block (2 levels) in <class:Pry>'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pager.rb:33:in `open'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry.rb:21:in `block in <class:Pry>'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:367:in `call'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:367:in `show_result'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:336:in `block in handle_line'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_class.rb:369:in `critical_section'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:335:in `handle_line'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:77:in `block in repl'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `loop'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `repl'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `block in start'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `call'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `__with_ownership'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/input_lock.rb:79:in `with_ownership'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `start'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:15:in `start'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_class.rb:169:in `start'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:219:in `block in <top (required)>'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `call'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `block in parse_options'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `each'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `parse_options'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/bin/pry:16:in `<top (required)>'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/bin/pry:23:in `load'",
  "/Users/nagai_shinya/.rbenv/versions/2.1.0/bin/pry:23:in `<main>'"
]