ruby-on-rails - 如何解决bundler gem版本与json gem冲突

标签 ruby-on-rails json ruby bundler

我想将我的应用程序中的 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/

相关文章:

sql - 如何模拟ActiveRecord Model.count.to_sql

mysql - Rails - 带分组的最大版本

ruby-on-rails - 如何调用 ActiveRecord 验证器作为实例方法(ala Sequel)?

javascript - 使用 javascript 连接两个数组

java - 如何断言 JSON 数组中具有相同键但值不同的两个 JSON 对象

asp.net-mvc - 使用 MVC 为 iPhone 应用程序构建 RESTful API - 如何保护它?

ruby-on-rails - rails : Gem Devise got attacked by spammer

ruby-on-rails - Heroku rake 命令

android - 在 Rails 网络应用程序和 native 应用程序之间共享相同的数据库

ruby-on-rails - 跨多个 Controller 的小部件数据