2013-10-21 17 views
8

我让Git叉两种宝石(比如酒吧),一个取决于其他:在gemspec add_dependency进入指定的git路径

foo.gemspec

... 
s.add_dependency "bar" 

我想我的foo的叉子取决于我的,而不是原来的宝石。

但是这不起作用:

s.add_dependency "bar", git: 'git:github.com/vemv/bar.git' # => ArgumentError! 

如何在.gemspec文件中指定依赖的来源?

如果不行,应该做些什么呢?

回答

10

不,不可能在.gemspec文件中做到这一点。

我认为你指的是Bundler的git功能,因为语法看起来一样。

因此,为了您的分叉宝石的开发,您将不​​得不在Gemfile中设置依赖关系,并将其从.gemspec文件中移除。

我假设你正在使用第三个应用程序,你不是在你的问题中提到的。我认为最简单的解决方案是使用Bundler :path功能直接引用这两个gem。这在你想要部署它的情况下是行不通的,除非你用你的应用程序供应宝石。总体而言,这是一件棘手的事情。特别是如果你只是想在第三方lib中修复依赖或其他小事情。 Bundler在这方面不够灵活。

+0

感谢您的澄清。现在我尝试在调用gemspec之前添加对Gemfile的git依赖关系。它不起作用 - 当我依赖于生成的gem时,我得到一个'LoadError'。这意味着git依赖被获取,但不是必需的... – vemv

+0

它应该不会影响你把那东西放在你的Gemfile中。你将不得不在lib中需要它,或者使用对'Bundle.setup'的调用来加载文件中的依赖关系。 – phoet