[英]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。
如果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将是不兼容的。 但是,此示例旨在说明如果满足直接依赖项指定的约束条件,则可以指定间接依赖项的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.