这是一个更普遍的问题,我是铁杆新手。
我尝试使用需要较旧版本json的gem,json -v 1.6.5
我的rails应用程序中的其他gem取决于更新版本的json,json -v 1.8我想知道是否可以指定与特定gem一起使用的json版本?
谢谢
答案 0 :(得分:1)
不可能同时使用2个版本的宝石。
答案 1 :(得分:0)
如果bundle update没有解决依赖关系,我会分配你需要使用与另一个版本相同的版本的gem,然后指向我的fork。
gem 'some_gem', git: 'https://github.com/user/My-Fork.git'
答案 2 :(得分:0)
每个依赖项都有一个版本约束,而您的项目只能使用每个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
(阅读有关~> operator here的更多信息)。
如果您想使用let json
版本1.9
,您可以修改gemfile或使用bundler命令更新锁文件中使用的版本。
E.g。
source 'https://rubygems.org/'
gem 'somegem', '~> 1.0'
gem 'json' , '~> 1.9'
在您的特定情况下,如果您有两个依赖项使用间接依赖项的冲突版本,那么gem将是不兼容的。但是,此示例旨在表明您可以指定间接依赖项的版本,如果它满足直接依赖项指定的约束。