【发布时间】:2011-06-22 18:37:52
【问题描述】:
我将一些 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文件是我自己创建的。我只是在那个 .gem 文件中打包了一些 ruby 代码,试图使它们易于与其他代码共享。 .gem 文件中有 lib 目录。我在想它会像 java 的 jar 一样。我想 ruby 可以查看该包文件,而不是将它们全部从包中提取出来。令人困惑的是,bundler 实际上是在包中找到源代码。但是 load_path 似乎不支持包中的目录。
-
顺便说一句,虽然 bundler 在我的特定路径下找到了 .gem 文件,但它不会将 .gem 缓存在 vendor/cache 中,除非 .gem 文件已安装到系统 gemset .