如何在红宝石中引用本地宝石?

时间:2011-06-22 18:37:53

标签: ruby gem load-path

我将一些ruby代码打包到gem中。我想在其他一些代码中引用gem中的代码。 所以在Gemfile中我指定了gem的名称,版本和本地路径。像:

gem 'gemname','0.x', :path => 'RELATIVE_PATH_TO_GEM_FILE'

安装捆绑后,我看到

Using gemname (0.x) from source at RELATIVE_PATH_TO_GEM_FILE

但是当我运行代码时,它无法在gem中找到代码。 LOAD_PATH显示ABSOLUTE_PATH_TO_GEM_FILE / lib。

难怪它找不到代码,只有ABSOLUTE_PATH_TO_GEM_FILE下的gem文件。它没有打开包装。所以没有lib目录。

如果我将gem文件安装到我的系统中,那么一切正常。我可以看到gem文件被解压缩到源代码文件中。 但我的问题是它是否能以某种方式直接引用本地gem文件?

2 个答案:

答案 0 :(得分:7)

不,您不能直接引用.gem文件。

在您的术语中,您需要使用“未打包”的宝石。

:path => '/foo/bar/'

其中/foo/bar/是带有lib/等的(gem)目录

答案 1 :(得分:1)

我们制作了一个本地(非系统范围)的宝石位置。我们设置了这些环境变量:

GEM_HOME=/path/to/rubygems-1.3.4
RUBYLIB=/path/to/rubygems-1.3.4/lib/

通过设置它们,我们可以执行'gem install ...'将构建的gem放入该目录,ruby知道在哪里找到它们。