在ruby代码中,需要使用require语句,例如
require 'rest-client'
应该从ruby加载路径加载ruby gems。但是,当通过ruby加载路径搜索时,我看不到任何rest-client gem?那么红宝石代码如何知道红宝石宝石的位置?
IRB(主):001:0> $ LOAD_PATH
=> [“/home/abc/.rbenv/rbenv.d/exec/gem-rehash”,......]
答案 0 :(得分:0)
RubyGems monkeypatches Kernel#require
,因此它将尝试在gem路径中找到包含该文件的gem,然后“激活”该gem,这基本上意味着将该gem的库目录添加到加载路径。
换句话说,当你调用require
时,你不会从核心库调用require
,而是从RubyGems中调用require
来覆盖核心库中的require
图书馆。 RubyGems的iterate
知道如何搜索宝石。