我有 2 个 gem,它们依赖于冲突版本的 hashie(一个需要 ~> 1.2.0,另一个需要 3.3.1):
Bundler could not find compatible versions for gem "hashie":
In Gemfile:
restforce (>= 0) ruby depends on
hashie (~> 1.2.0) ruby
omniauth (>= 0) ruby depends on
hashie (3.3.1)
我想保留这两个宝石并使用更高版本的 hashie。有没有办法让我覆盖其中一个 gem 依赖项?
标准建议是使用更高版本兼容的.
我这样做,但我认为捆绑器有一个定义的命令。
首先删除该行gem 'omniauth'
在您的 Gemfile 中。跑步bundle install
,那么您必须再次添加该行gem 'omniauth'
到您的 Gemfile 中,再次运行捆绑安装。
如果你看 Gemfile.lock,这个安装hashie 2.0.5
,兼容性越高。
编辑:为什么这有效?
首先我检查omniauth https://rubygems.org/gems/omniauth与 hashie 的依赖关系:hashie < 4, >= 1.2
,那么与休息力量 https://rubygems.org/gems/restforce: hashie < 2.1, >= 1.2.0
。此时,我知道 1.2 和 2.0.x 之间的任何版本的 hashie 都必须工作。然后我们必须删除 Gemfile.lock 中继续使用 hassie 3.3.1 的约束,从 Gemfile 中删除“omniauth”就完成了。之后,当安装restforce时,捆绑程序会发现与restforce“2.0.5”兼容的新版本。当您再次添加omniauth 捆绑程序时,不会更新已完成的依赖项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)