在pry中默认加载哪些库?

iro*_*and 2 ruby irb pry

当我使用Tempfileclass时pry,我不使用require.

% pry -f
pry(main)> Tempfile
Tempfile < #<Class:0x00007fb5121149b8>
Run Code Online (Sandbox Code Playgroud)

但是当irb我必须先要求时tempfile.

% irb
irb(main):001:0> Tempfile
NameError: uninitialized constant Tempfile
    from (irb):1
    from /Users/ironsand/.rbenv/versions/2.4.3/bin/irb:11:in `<main>'
irb(main):002:0> require 'tempfile'
=> true
Run Code Online (Sandbox Code Playgroud)

所以它似乎pry默认加载一些库.实际加载了哪些库?

这是我的环境

 % ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17]
 % irb --version
pirb 0.9.6(09/06/30)
 % pry --version
Pry version 0.11.3 on Ruby 2.4.3
Run Code Online (Sandbox Code Playgroud)

mat*_*ewd 7

您可以比较$LOADED_FEATURES以查看在默认pry会话中加载的所有内容与irb会话(或简单的ruby脚本).

简短的回答是Pry加载了提供自己行为所需的任何库.长答案太长(并且太可能过时,或者版本不同)在此处列出 - 更好地询问您当前的环境.

最好不依赖其他库来为您加载依赖项,因为这些依赖项可能会发生变化.(虽然在这种情况下,很难注意到你错过了require,因为一切仍然有效.)