运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Ruby – 使用`require`命令

运维开发网 https://www.qedev.com 2020-08-09 21:53 出处:网络 作者:运维开发网整理
我正在编辑一个gem,其中有通常的require命令,指向加载的gem(我正在谈论的gem被称为nirvana,其中的文件包含require’navana’,require’navana / shell‘等等上). 当我使用应用程序的bin文件(/ mypath / nirvana / bin / nirvana)时,我希望在其中编写的require’nirvana’命令指向该gem的本地fork
我正在编辑一个gem,其中有通常的require命令,指向加载的gem(我正在谈论的gem被称为nirvana,其中的文件包含require’navana’,require’navana / shell‘等等上).

当我使用应用程序的bin文件(/ mypath / nirvana / bin / nirvana)时,我希望在其中编写的require’nirvana’命令指向该gem的本地fork中的文件(我正在编辑的那些文件) ),我希望不加载原始的涅宝石宝石,它与经典的宝石安装一起安装.

我不想用所有的’nirvana’命令替换

require File.dirname(File.expand_path(__FILE__)) + '/../lib/nirvana.rb'

……这会解决我的问题,但这很难看!有没有办法不加载nirvana gem,并使require’nirvana’加载我的库(可能在$LOAD_PATH …中添加它们)?

如果您使用gems二进制可执行文件执行此操作,那么您应该只需要’nirvana.rb’一次.所以这条线只需要出现一次.看到它出现在这些文件中是很常见的.

请注意,您的示例可以更好地编写为

require File.expand_path('../lib/nirvana.rb', __FILE__)

由于File::expand_path采用可选的第二个参数(目录字符串).

许多作者还会在执行二进制文件之前将lib目录转移到$LOAD_PATH中,以便在尝试加载任何已安装的gem之前加载本地文件.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消