2

我有一个使用 nginx/unicorn/sinatra (bundler/rvm) 运行的站点。在我最后一次之后bundle update,我收到一个错误:

in `raise_if_conflicts': Unable to activate dm-serializer-1.2.1, because multi_json-1.3.5 conflicts with multi_json (~> 1.0.3)

我的 Gemfile 是:

source "http://rubygems.org"

gem 'unicorn'
gem 'sinatra'
gem 'datamapper'
gem 'dm-mysql-adapter'
gem 'haml'
gem 'sass'
gem 'omniauth-twitter'

Gemfile.lock 没有对 multi_json 1.0.3 的任何引用

有任何想法吗?

4

3 回答 3

1

解决方案是:

  • 检查 Gemfile.lock 以查看哪些 gem(s)引入了更高版本(在这种情况下 -omniauth-twitter)
  • 找一个不需要太高版本的‘罪犯’
  • 回滚更高版本,锁定到 Gemfile 中的正确版本

在这种特殊情况下,工作的 Gemfile 需要行:

gem 'omniauth-twitter', '0.0.9'
gem 'multi_json', '~> 1.0.3'
于 2012-05-13T20:23:06.713 回答
0

你的包中的一个 gem 有一个旧版本的multi_json作为它看起来的依赖项。看看有没有bundle viz告诉你。ruby-graphviz但是,如果您尚未安装 gem 和 graphviz 本身,则需要安装它们。

另一种查看最新情况的方法是将multi_json您尝试升级到的版本添加到您的 gemfile 中,然后执行 abundle install并查看出现了什么错误。

于 2012-05-13T03:57:09.640 回答
0

这是解决此问题的方法:

rvm uninstall multi_json

它会告诉您安装了许多版本,显示它们的列表,并询问您要卸载哪个版本。
尝试第一个,如果它告诉您它已被其他宝石使用,请尝试第二个,依此类推。继续删除所有未使用的版本,直到只剩下一个。

我就是这样做的,但可能有一些更清晰的解决方案。如果有人知道,感谢您与我们分享。

于 2012-05-13T14:20:15.017 回答