Search code examples
rubyirbpry

Which libraries are loaded by default in pry?


When I use Tempfile class in pry, I don't use require it.

% pry -f
pry(main)> Tempfile
Tempfile < #<Class:0x00007fb5121149b8>

But when in irb I must to require tempfile first.

% 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

So it seems pry load some libraries by default. Which libraries are actually loaded?

This is my environment

 % 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

Solution

  • As an alternative to $LOADED_FEATURES, which can be a bit excessive, consider:

    Gem.loaded_specs.values.each {|s| puts s.name}
    

    which only lists gems with specs

    [20] pry(main)> Gem.loaded_specs.values.each {|s| puts s.name};nil
    did_you_mean
    coderay
    method_source
    pry
    io-console
    vls
    => nil
    

    BTW, in this example, I had loaded the vls gem manually.