我想将我的应用程序中的 json gem 更新到版本 2.0.2。目前它在版本 1.8.3 中作为依赖项加载。
所以,我添加了
gem 'json', '>= 2.0.2'
到我的 Gemfile 并输入
bundle update json
我明白了
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "json":
In Gemfile:
json (>= 2.0.2)
paperclip (~> 4.2.0) was resolved to 4.2.4, which depends on
activesupport (>= 3.2.0) was resolved to 4.2.7, which depends on
json (>= 1.7.7, ~> 1.7)
这对我来说没有意义,因为我认为 json (>= 1.7.7, ~> 1.7)
表示 activesupport 4.2.7 是依赖的至少版本 1.7.7 的 json gem,所以 2.0.2 不应该发生冲突,不是吗?
这里正确的解释是什么?
我可以采取哪些步骤才能成功将 json v2.0.2 gem 添加到我的 Rails v4.2.7 应用程序中?
最佳答案
json 要求有两部分。第一个是 >= 1.7.7
表示 Gem 必须大于或等于 1.7.7。事实上,2.0.2 大于 1.7.7,因此您满足该要求。然而,第二部分是它也必须是 ~> 1.7
(发音为“tiddle-wakka”),这就是所谓的悲观约束。它要求版本号的第一个元素匹配,但最后一个元素可以大于或等于给定的数字。例如,1.7.0 将满足该约束。 1.7.9 或 1.9.9,甚至 1.423.8 也是如此。但是,2.0.0 将无法满足该约束,因为主版本号与给定值“1”不匹配。
关于ruby-on-rails - 如何解决bundler gem版本与json gem冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735114/