繁体   English   中英

指定要用于特定宝石的宝石版本?

[英]specify gem version to be used with a specific gem?

这更是一个普遍的问题,我是Rails的新手。

我试图使用需要较旧版本json的gem json -v 1.6.5

我的Rails应用程序中的其他gem取决于较新版本的json,json -v 1.8

我想知道是否可以指定要与特定gem一起使用的json版本?

谢谢

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

同时使用2个版本的gem

如果bundle更新不能解决依赖关系,我将分叉gem,您需要使用与其他gem相同的版本,然后指向我的分叉。

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

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

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

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

source 'https://rubygems.org/'

gem 'somegem', '~> 1.0'

您的gemfile锁看起来像这样(注意,为简洁起见,省略了一些部分):

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

Gemfile.lock指示somegem依赖于json ,并且json版本必须大于或等于1.8但小于2.0在此处了解有关〜>运算符的更多信息)。

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

例如

source 'https://rubygems.org/'

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

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

Rails使用Bundler管理Ruby依赖项。 gemfile概述是开始学习如何管理项目依赖项的好地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM