我有一个我在本地机器上用Ruby创建的gem,我需要在一个启动服务的普通Ruby脚本中需要这个gem。
我必须这样要求:
require_relative '../../../my-gem/lib/my/gem'
是否可以在不放入相对路径的情况下执行此操作?
答案 0 :(得分:2)
require
检查$LOAD_PATH
中的文件。您可以将gem放在其中一个目录中,直接require
。如果您不喜欢加载路径,可以在脚本中为其添加新目录,或者设置添加到加载路径的RUBYLIB
环境变量。
答案 1 :(得分:1)
如果你有一个gem,你可以安装它并使用gem 'my-gem', '= 1.0.0.beta'
设置你想要的版本(在我的例子中为1.0.0.beta)。
但我认为你会寻找另一个解决方案:
您可以扩展require
看起来的位置:
$:.unshift('../../../my-gem/lib')
require('my/gem')
或
$LOAD_PATH.unshift('../../../my-gem/lib')
require('my/gem')
您也可以使用$: << '../../../my-gem/lib'
,但我更喜欢unshift
。如果你的gem包含一个名字与gem中相似的文件(避免它!),那么unshift
可以保证你的脚本被加载。