pry 默认加载哪些库?
Which libraries are loaded by default in pry?
当我在pry
中使用Tempfile
class时,我没有使用require它。
% pry -f
pry(main)> Tempfile
Tempfile < #<Class:0x00007fb5121149b8>
但是在 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
所以似乎 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
您可以比较 $LOADED_FEATURES
以查看默认 pry
会话与 irb
会话(或普通 ruby 脚本)中加载的所有内容。
简短的回答是 Pry 加载它需要的任何库来提供自己的行为。长答案太长(而且很可能会过时,或者版本之间存在差异)无法在此处列出——最好询问您当前的环境。
最好不要依赖其他库为您加载它们的依赖项,因为这些依赖项可能会发生变化。 (尽管在这种情况下,您可能很难注意到您遗漏了一个 require
,因为一切仍然有效。)
作为 $LOADED_FEATURES 的替代方案,它可能有点过分,请考虑:
Gem.loaded_specs.values.each {|s| puts s.name}
仅列出 gem 规格
[20] pry(main)> Gem.loaded_specs.values.each {|s| puts s.name};nil
did_you_mean
coderay
method_source
pry
io-console
vls
=> nil
顺便说一句,在这个例子中,我手动加载了 vls gem。
当我在pry
中使用Tempfile
class时,我没有使用require它。
% pry -f
pry(main)> Tempfile
Tempfile < #<Class:0x00007fb5121149b8>
但是在 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
所以似乎 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
您可以比较 $LOADED_FEATURES
以查看默认 pry
会话与 irb
会话(或普通 ruby 脚本)中加载的所有内容。
简短的回答是 Pry 加载它需要的任何库来提供自己的行为。长答案太长(而且很可能会过时,或者版本之间存在差异)无法在此处列出——最好询问您当前的环境。
最好不要依赖其他库为您加载它们的依赖项,因为这些依赖项可能会发生变化。 (尽管在这种情况下,您可能很难注意到您遗漏了一个 require
,因为一切仍然有效。)
作为 $LOADED_FEATURES 的替代方案,它可能有点过分,请考虑:
Gem.loaded_specs.values.each {|s| puts s.name}
仅列出 gem 规格
[20] pry(main)> Gem.loaded_specs.values.each {|s| puts s.name};nil
did_you_mean
coderay
method_source
pry
io-console
vls
=> nil
顺便说一句,在这个例子中,我手动加载了 vls gem。