Ruby on rails 指定要与特定gem一起使用的gem版本?

Ruby on rails 指定要与特定gem一起使用的gem版本?,ruby-on-rails,ruby,Ruby On Rails,Ruby,这是一个更一般的问题,我是rails新手 我试图使用一个需要旧版本json的gem,json-V1.6.5 我的rails应用程序中的其他gem依赖于更新版本的json,json-V1.8 我想知道是否可以指定用于特定gem的json版本 谢谢你如果bundle update无法解决我将分叉的gems的依赖关系,你需要使用与另一个版本相同的版本,然后指向我的分叉 gem 'some_gem', git: 'https://github.com/user/My-Fork.git' 不,不可能同时

这是一个更一般的问题,我是rails新手

我试图使用一个需要旧版本json的gem,json-V1.6.5

我的rails应用程序中的其他gem依赖于更新版本的json,json-V1.8

我想知道是否可以指定用于特定gem的json版本


谢谢你

如果bundle update无法解决我将分叉的gems的依赖关系,你需要使用与另一个版本相同的版本,然后指向我的分叉

gem 'some_gem', git: 'https://github.com/user/My-Fork.git'

不,不可能同时使用两个版本的gem


每个依赖项都有一个版本约束,您的项目只能使用每个gem的一个版本

具体问题的答案是,,您可以通过指定要在文件中直接使用的版本来控制间接依赖项的版本。但是,此版本必须满足直接依赖项的版本约束

一个简单的例子。假设您的GEM文件如下所示:

source 'https://rubygems.org/'

gem 'somegem', '~> 1.0'
您的gemfile锁如下所示(注意,为了简洁起见,省略了一些部分):

Gemfile.lock表示
somegem
依赖于
json
,并且
json
版本必须大于或等于
1.8
但小于
2.0
(请阅读更多有关该版本的信息)

如果要使用let say
json
version
1.9
,可以修改gemfile或使用bundler命令更新锁文件中使用的版本

例如

在您的特定情况下,如果有两个依赖项使用了冲突版本的间接依赖项,那么gems将不兼容。但是,此示例旨在说明,如果间接依赖项满足直接依赖项指定的约束,则可以指定其版本

Rails用于管理Ruby依赖项。概述将是开始学习如何管理项目的依赖关系的好地方

GEM
  remote: https://rubygems.org/
  specs:
    somegem (1.0)
      json (~> 1.8)
    json (1.8)
source 'https://rubygems.org/'

gem 'somegem', '~> 1.0'
gem 'json'   , '~> 1.9'