2011-06-12 85 views
18

我正在帮助开发一系列相关的gem。因此,我不希望他们对彼此有很强的依赖性,但我希望他们在开发中运行彼此使用的测试。简单的权利?只需在gemspec中使用add_development_dependency,对不对?那么,有一点点皱纹 - git仓库包含了所有的宝石,所以我想让Gemfile指向本地的gem副本。这与硬依赖性一起工作。在gemspec,我有这行我的硬盘依赖性:Gem和bundler:使用相对路径添加开发依赖关系

s.add_dependency "mygem-core" 

然后在Gemfile中,我有这行:

gem "mygem-core", :path => "../mygem-core" 

这完美的作品。当我推出这个软件包时,存在依赖关系,当我测试时,它将使用mygem-core的本地副本。问题是,当我把这个在gemspec:

s.add_development_dependency "mygem-runtime" 

然后这在Gemfile中:

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 "mygem-runtime", :path => "../mygem-runtime" 

然后我当我运行包得到一个错误是的,这不是最后的错字。第二个“位置”的字尾有一个空白的空白空间。有没有什么聪明的方法可以解决这个问题?我想将其作为开发依赖项添加,并使用本地源代码。我错过了什么?

回答

9

它可能会更好,你留下的宝石了.gemspec清单,并把它放在的Gemfile下:发展组。

# Gemfile 
source :rubygems 
gemspec 

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

如果您使用Gemfile来指定gem的本地路径,您需要将它从gemspec中移除。 Bundler将解析gemspec并添加这些bundler正在安装的依赖关系,所以它就像指定了两次gem。