在 Ruby 代码中,require 语句,例如
需要"休息客户端">
应从红宝石加载路径加载红宝石。但是,当通过 ruby 加载路径搜索时,我没有看到任何 rest-client gem?那么红宝石代码是如何知道红宝石宝石在哪里的呢?
IRB(主(:001:0> $LOAD_路径
=> ["/home/abc/.rbenv/rbenv.d/exec/gem-rehash", ......]
RubyGems 猴子补丁Kernel#require
,以便它会尝试在 gem 路径中找到包含该文件的 gem,然后"激活"该 gem,这基本上意味着将该 gem 的库目录添加到加载路径中。
换句话说,当您调用 require
时,您不会从核心库中调用require
,而是从 RubyGems 调用require
,这会覆盖核心库中的。RubyGems 的require
知道如何搜索宝石。