需要本地宝石红宝石

时间:2014-03-11 16:51:20

标签: ruby rubygems

我有一个我在本地机器上用Ruby创建的gem,我需要在一个启动服务的普通Ruby脚本中需要这个gem。

我必须这样要求:

require_relative '../../../my-gem/lib/my/gem'

是否可以在不放入相对路径的情况下执行此操作?

2 个答案:

答案 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可以保证你的脚本被加载。