3

我正在创建一个 gem,它依赖于另一个已发布的 gem。在my_gem.gemspec中,我已将依赖项添加到另一个 gem:

gem.add_dependency "other_gem", "~> 1.0.0"

现在,我发现了一个可以在other_gem中调整的功能,所以我分叉了存储库,进行了更改并将其提交到了 fork(它还没有被拉入原始存储库)。

我的问题是如何告诉my_gem在本地查找other_gem?下面的代码片段无效,因为:path它不是add_dependency调用中的选项,如Gem 规范参考中所述:

gem.add_dependency "other_gem", "~> 1.0.0", :path => '/path/to/local/other_gem

4

3 回答 3

2

在本地更容易:当您进行开发时,您可以包括:

gem "other_gem", :path => '/path/to/local/other_gem'

或者

gem "other_gem", :git => "git@github.com:/your_github/other_gem.git"

在您的 gemfile 中,因为这应该覆盖 gemspec

于 2013-01-11T07:17:52.823 回答
0

在本地,不太可能提供 gem 依赖项的路径,因为如果您这样做,这意味着您对自制 gem 施加了限制,它在本地依赖于任何其他 gem。

这是不可取的,因为当您上传它时,这将不起作用。所以解决方案是在自己插件的gemspec中添加远程依赖。

在此处查看我的 SO 帖子。

于 2013-01-11T08:34:59.787 回答
0

我会创建并安装一个新other_gem版本,例如“1.0.0.Subash_fix”并将其用作

gem.add_dependency "other_gem", "= 1.0.0.Subash_fix"

当你的补丁有新的官方版本的 gem 时,你切换回官方版本:

gem.add_dependency "other_gem", "~> 1.0.1"
于 2013-01-11T08:38:32.070 回答