如何覆盖宝石依赖?[英] How to override gem dependency?

本文是小编为大家收集整理的关于如何覆盖宝石依赖?的处理方法,想解了如何覆盖宝石依赖?的问题怎么解决?如何覆盖宝石依赖?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有2个宝石,依赖于哈希的冲突版本(一个需要〜> 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)

我想保留两个宝石并使用较高版本的哈希.有没有办法让我覆盖一个宝石依赖关系?

推荐答案

标准建议是使用更高版本兼容.

我这样做,但我认为Bundler为它有一个定义的命令.

首先删除Gemfile的gem 'omniauth'行.运行bundle install,然后必须将与gem 'omniauth'的行添加到Gemfile中,再次运行捆绑包.

如果您查看Gemfile.Lock,这将兼容hashie 2.0.5,兼容较高.

编辑:为什么这项工作?

首先我检查 Omniauth 依赖关系与hashie:hashie < 4, >= 1.2,然后与 reastforce :hashie < 2.1, >= 1.2.0.在这一点上,我知道任何版本的哈希...必须工作到1.2和2.0.x之间.然后,我们必须删除Gemfile.Lock的Constaint使用Hassie 3.3.1,从GemFile中删除它所做的"Omniauth".之后,当安装RESTFORCE时,Bundler找到与RESTFORCE'2.0.5'兼容的新版本.当您再次添加Omniauth Bundler时,不会更新完成的依赖项.

其他推荐答案

我认为bundle update实际上是你以后的东西.如果需要,将依赖性分类并安装不同版本的GEMS,为您提供最新的宝石.

然而,要小心,因为更新的宝石可以引入兼容性问题.

本文地址:https://www.itbaoku.cn/post/786753.html