Ruby Gem和bundler:添加具有相对路径的开发依赖项

Ruby Gem和bundler:添加具有相对路径的开发依赖项,ruby,rubygems,bundler,Ruby,Rubygems,Bundler,我正在帮助开发一系列相互关联的宝石。因此,我不希望它们彼此之间存在硬依赖,但我确实希望它们在开发中运行相互使用的测试。简单对吧?只需在gempec中使用add\u development\u dependency,对吗?嗯,有一个小问题-git存储库包含所有gem,因此我希望gem文件指向gem的本地副本。这适用于硬依赖。在gemspec中,我的硬依赖性有以下几行: s.add_dependency "mygem-core" 然后在Gemfile中,我有一行: gem "mygem-core"

我正在帮助开发一系列相互关联的宝石。因此,我不希望它们彼此之间存在硬依赖,但我确实希望它们在开发中运行相互使用的测试。简单对吧?只需在gempec中使用
add\u development\u dependency
,对吗?嗯,有一个小问题-git存储库包含所有gem,因此我希望gem文件指向gem的本地副本。这适用于硬依赖。在gemspec中,我的硬依赖性有以下几行:

s.add_dependency "mygem-core"
然后在Gemfile中,我有一行:

gem "mygem-core", :path => "../mygem-core"
这很好用。当我推出这个包时,依赖关系存在,当我进行测试时,它将使用mygem core的本地副本。问题是,当我把这个放在gemspec中时:

s.add_development_dependency "mygem-runtime"
然后在GEM文件中显示:

gem "mygem-runtime", :path => "../mygem-runtime"
然后,当我运行bundle时,我得到一个错误:

You cannot specify the same gem twice coming from different sources. You specified that mygem-packager (>= 0) should come from source at ../mygem-packager and 

是的,这不是最后的打字错误。在第二个“位置”的末尾有一个空白的空间。有什么聪明的方法可以解决这个问题吗?我想将其添加为开发依赖项,并使用本地源代码。我遗漏了什么?

最好将该gem从.gemspec清单中删除,并将其放在Gemfile中的:development组下


如果您使用Gemfile指定gem的本地路径,则需要将其从gempec中删除。Bundler将解析gempec并添加Bundler正在安装的依赖项,因此这就像将gem指定两次一样

# Gemfile
source :rubygems
gemspec

gem "mygem-runtime", :path => '../mygem-runtime', :group => :development