如何解决宝石和捆绑器:在相对路径上添加显影依赖性
|| 我正在协助开发一系列相互关联的宝石。因此,我不希望他们彼此之间有严格的依赖关系,但是我希望他们在彼此使用的开发环境中运行测试。简单吧?只需在gemspec中使用add_development_dependency
,对吗?好吧,这里有一点皱纹-git存储库包含所有gems,因此我希望Gemfile指向该gem的本地副本。这具有硬依赖性。在gemspec中,我的这一行是我的硬依赖项:
s.add_dependency \"mygem-core\"
然后在Gemfile中,有以下一行:
gem \"mygem-core\",:path => \"../mygem-core\"
这是完美的。当我推出此程序包时,以及当我进行测试时,该依赖项都将使用mygem-core的本地副本。问题是,当我将此内容放入gemspec中时:
s.add_development_dependency \"mygem-runtime\"
然后在Gemfile中:
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
是的,这并不是最后的错字。在第二个“位置”的末尾实际上有一个空白空间。有什么聪明的方法来解决此问题?我想将此添加为开发依赖项,并使用本地源。我想念什么?
解决方法
最好将.gemspec清单中的gem保留下来,然后将其放在:development组下的Gemfile中。
# Gemfile
source :rubygems
gemspec
gem \"mygem-runtime\",:path => \'../mygem-runtime\',:group => :development
, 如果您使用Gemfile来指定宝石的本地路径,则需要将其从gemspec中删除。捆绑器将解析gemspec并添加捆绑器正在安装的依赖项,因此就像将gem指定两次一样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。