Home Articles

Ruby On Rails:Bundler找不到gem“json”的兼容版本

Asked
Viewed 1388 times
2

我做了搜索,现有的解决方案都没有为我工作,所以我创建了一个新问题 .

尝试启动服务器时出错 .

Bundler找不到gem“json”的兼容版本:在快照(Gemfile.lock)中:json(= 1.8.6)在Gemfile中:rails(= 4.2.4)x86-mingw32被解析为4.2.4,这取决于on activesupport(= 4.2.4)x86-mingw32被解析为4.2.4,这取决于json(> = 1.7.7,〜> 1.7)x86-mingw32

Gemfile源'https://rubygems.org'

gem 'rails', '4.2.4'
 gem 'activerecord-jdbcpostgresql-adapter'
 gem 'sass-rails', '~> 5.0'
 gem 'uglifier', '>= 1.3.0'
 gem 'coffee-rails', '~> 4.1.0'
 gem 'therubyrhino'
 gem 'jquery-rails'
 gem 'jbuilder', '~> 2.0'
 gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Gemfile.lock片段

GEM
   remote: https://rubygems.org/
   specs:
  activesupport (4.2.4)
       i18n (~> 0.7)
       json (~> 1.7, >= 1.7.7)
       minitest (~> 5.1)
       thread_safe (~> 0.3, >= 0.3.4)
       tzinfo (~> 1.1)

  json (1.8.6-java)

我试图做的:

  • 删除Gemfile.lock并运行bundle install

  • 将json添加到Gemfile

  • 将Gemfile.lock中的json设置为1.8.6-java

Bundler找不到gem“json”的兼容版本:在快照(Gemfile.lock)中:json(= 1.8.6)在Gemfile中:rails(= 4.2.4)x86-mingw32被解析为4.2.4,这取决于on activesupport(= 4.2.4)x86-mingw32被解析为4.2.4,这取决于json(= 1.8.6)x86-mingw32

从Gemfile.lock中删除json(1.8.6-java)

这些都没有奏效 .

3 Answers

  • 1

    做就是了

    bundle update
    

    这个对我有用

  • 0

    不幸的是,当你明确地将它添加到你的gemfile中或者你指定它的gemfile中的行踪时,我不会问你指定的json版本(see this SO thread) . 但我最好的猜测是,您的其他依赖项之一正在下载 1.8.6 ,这与您的Active Support版本指定的版本 ~>1.7.7 不一致 .

    我的建议是尝试明确要求

    json (~> 1.7, >= 1.7.7)
    

    在你的gemfile的 endbefore something else loads it . 如果其他东西试图加载更新版本的 json ,您应该收到不同的错误消息;您可能必须指定一个早期版本的gem试图下载冲突的版本 .

  • 0

    当您运行捆绑包更新以更新您的宝石时,它会立即更新所有宝石 . 如果您的应用程序停止工作或测试开始失败,那么很难确定哪个gem更新破坏了它 .

    您可能认为 bundle update gem_name 只会更新该gem及其依赖项 .

    注意: bundle update --source gem_name 仅更新gem

Related