首页 文章

如何在Bundler中使用“gemspec”规则,同时仍然使用gem的本地签出?

提问于
浏览
19

场景:我正在使用Bundler开发一个gem gem-foo . 我依赖 gem-bar ,我已在本地检查开发 . 我可以在 Gemfile 中声明这种依赖关系:

gem "gem-bar", :path => "/path/to/local/gem-bar"

但是,在开发gem时,"best practice"似乎是在 gem-foo.gemspec via中定义所需的gem:

s.add_runtime_dependency 'gem-bar'

然后使用以下命令将依赖项包含在 Gemfile 中:

gemspec

我想要做的是在gemspec中添加对gem的运行时依赖性,但是对 gem-bar 进行一些本地修改并使用 bundle install 使用本地开发结帐 . 假设我控制两个宝石的情况,并且我在某种程度上同时攻击它们,我将同时推动新版本 . 我可以在gemspec中注释出 s.add_runtime_dependency 并将其添加到Gemfile中的本地路径,但这感觉......容易出错? gemspec应该总是声明这个依赖项,并且Gemfile应该能够覆盖Bundler应该用于gem的位置 . 但是,如果您实际执行此操作,则会收到以下错误:

您不能指定来自不同来源的相同gem两次 . 您指定gem-bar(> = 0)应来自未指定的源和/ path / to / local / gem-bar的源

理想情况下,我只是有一些本地覆盖,因为我从来不想要在特定路径上不小心推动gem需要本地 gem-bar 的情况 . 那会很愚蠢 .

有没有人对这个用例有一个很好的解决方案?

3 回答

相关问题