【问题标题】:Where is the folder to load Ruby gems加载 Ruby gem 的文件夹在哪里
【发布时间】:2018-03-07 03:39:12
【问题描述】:

在ruby代码中,require语句,如

需要“休息客户端”

应该从 ruby​​ 加载路径加载 ruby​​ gem。但是,通过 ruby​​ 加载路径搜索时,我没有看到任何 rest-client gem?那么 ruby​​ 代码如何知道 ruby​​ gem 的位置呢?

irb(main):001:0> $LOAD_PATH

=> ["/home/abc/.rbenv/rbenv.d/exec/gem-rehash", ......]

【问题讨论】:

  • 可以使用Gem.find_files("rest_client")查看路径。

标签: ruby rubygems


【解决方案1】:

RubyGems monkeypatches Kernel#require,因此它会尝试在 gem 路径中找到包含该文件的 gem,然后“激活”该 gem,这基本上意味着将该 gem 的库目录添加到加载路径。

换句话说,当你调用require时,你不会从核心库调用require,而是从RubyGems调用require,它会覆盖核心库中的require。来自 RubyGems 的 require 知道如何搜索 gem。

【讨论】:

  • 红宝石不是一直活跃在现代红宝石中吗?所以我们从来没有真正调用过核心版本?
  • 大多数实现都支持--disable-rubygems
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
相关资源
最近更新 更多