如何解决Bundler中的依赖关系问题?

5

我希望使用最新版本的oauth2宝石,所以我将其添加到我的gemfile中,并运行bundle install。

Bundler could not find compatible versions for gem "multi_json":
  In Gemfile:
    oauth2 (= 0.7.0) ruby depends on
      multi_json (~> 1.3) ruby

    uglifier (>= 0) ruby depends on
      multi_json (1.0.4)

好的,我会用bundle update uglifier更新uglify压缩器。

Bundler could not find compatible versions for gem "faraday":
  In snapshot (Gemfile.lock):
    faraday (0.5.7)

  In Gemfile:
    oauth2 (= 0.7.0) ruby depends on
      faraday (~> 0.8) ruby

嗯,那我尝试一下执行 bundle update oauth2 命令?

Bundler could not find compatible versions for gem "multi_json":
  In Gemfile:
    oauth2 (= 0.7.0) ruby depends on
      multi_json (~> 1.3) ruby

    uglifier (>= 0) ruby depends on
      multi_json (1.0.4)

哦,没错..这正是我一开始想做的事情。好吧,也许我可以指定最新版本的uglifier gem 'uglifier',"~> 1.2.4",然后再次运行bundle update uglifier

Bundler could not find compatible versions for gem "faraday":
  In Gemfile:
    oauth2 (~> 0.7.0) ruby depends on
      faraday (~> 0.8) ruby

    instagram (>= 0) ruby depends on
      faraday (0.5.7)

好的,那就让我们来翻译关于IT技术的内容吧。这段文字涉及到了使用命令bundle update instagram时出现的问题,主要是由于Instagram和oauth2之间的multi_json不兼容性导致的。

如何解决这个问题呢?是不是只需要更新Instagram gem以使用新版本的multi json就可以了呢?还是说还有其他的尝试方法呢?


你尝试过一次性更新所有的依赖吗?bundle update uglifier multi_json instagram faraday - Andrew Marshall
谢谢您的建议,我尝试了一下,但收到了相同的 Instagram/OAuth MultiJson 版本不兼容的错误。 - Nathan Manousos
试试用老旧的bundle update一次性更新所有东西?即使你不想真的这样做(你在源代码控制中有你提交的Gemfile.lock,所以你可以轻松回到之前的版本,对吧?),这可能会给你一些关于发生了什么的线索。无论是bundle update也失败了并且失败信息很有教育意义,还是它成功了,你都可以查看Gemfile.lock并看看它最终使用了哪些版本的什么东西。 - jrochkind
@NathanManousos 如果我的答案解决了你的问题,你能否采纳它呢?谢谢。 - Inanc Gumus
1个回答

2

立即清空您的GEM目录,然后执行全新的bundle命令。可以将此视为重置计算机。

$GEM_PATH是您的gem所在的位置(每个路径用两个点分隔)

bundle show gem_name(也会显示您的gems所在的位置)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接