7

我将一些 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 文件?

4

2 回答 2

7

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

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

:path => '/foo/bar/'

/foo/bar/带有lib/等的(gem)目录在哪里?

于 2011-06-22T19:11:29.680 回答
1

我们创建了一个本地(不是系统范围的)gems 位置。我们设置这些环境变量:

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

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

于 2011-06-30T20:07:25.873 回答