ruby - 默认加载哪些 ruby​​ 模块?

标签 ruby

直到最近,我还认为默认情况下不会加载所有标准模块(可以在 http://ruby-doc.org/stdlib/ 上看到的模块)。也就是说,您必须要求您将要使用的每一个。但从$LOADED_FEATURES的内容来看,其中一些确实已加载:

$ ruby -rpp -e 'p $LOADED_FEATURES'
["enumerator.so",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-linux/enc/encdb.so",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-linux/enc/trans/transdb.so",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-linux/rbconfig.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/compatibility.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/defaults.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/deprecate.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/errors.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/version.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/requirement.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/platform.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/specification.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/exceptions.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb",                                                                                          
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/prettyprint.rb",
 "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/pp.rb"]

所以我想知道原因是什么,我可以以任何方式影响它吗?

UPD 输出,无需 pp

$ ruby -e 'p $LOADED_FEATURES'
["enumerator.so", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-linux/enc/encdb.so", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-linux/enc/trans/transdb.so", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-linux/rbconfig.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/compatibility.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/defaults.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/deprecate.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/errors.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/version.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/requirement.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/platform.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/specification.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/exceptions.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb", "/home/yuri/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems.rb"]

最佳答案

我看到加载的唯一库是 RubyGems,它确实在 1.9.0 中添加到了 Ruby。

顺便说一句:您不需要需要 模块,而是需要文件。

关于ruby - 默认加载哪些 ruby​​ 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21468617/

相关文章:

Ruby 脚本 - Telnet 在登录期间挂起

ruby-on-rails - 迭代 Rails 对象数组以创建键/值对

ruby - 为什么 Ruby 认为公元 100 年有 366 天?

ruby - Devise、Omniauth 和 Twitter

ruby-on-rails - 等待 The Rails 3 Way 或任何其他类似的书?

ruby - 如何检测未经测试的 ruby​​ 文件?

ruby-on-rails - 从 ruby​​ 中的数组获取最新版本

ruby - 如何在 Ruby 中发送 HTTP PUT 请求?

ruby - 如何对 ASCII 字符进行 URL 编码?

ruby-on-rails - Ruby on Rails - 使用 logger.info "hi"给出 undefined variable 或方法错误,要更改/设置什么?