如何在ruby中引用本地gem?

我将一些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文件被解压缩到源代码文件中。 但我的问题是它是否可以直接引用本地gem文件?

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

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

 :path => '/foo/bar/' 

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

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

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

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