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_json1.0.3への参照がありません

何か案は?

4

3 に答える 3

1

解決策は次のとおりです。

  • Gemfile.lockをチェックして、どのgemが新しいバージョンをもたらすかを確認します(この場合-omniauth-twitter)
  • 高すぎるバージョンを必要としない「犯罪者」のバージョンを見つける
  • それ以降のバージョンをロールバックし、Gemfileで適切なバージョンにロックします

この特定のケースでは、動作するGemfileには次の行が必要です。

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

multi_jsonバンドル内のgemの1つに、依存関係としての古いバージョンがあります。bundle viz教えてくれるか見てください。ruby-graphvizただし、 gemとgraphvizをまだインストールしていない場合は、それら自体をインストールする必要があります。

multi_json何が起きているかを確認する別の方法は、アップグレードしようとしているバージョンでgemfileに追加してから、を実行してbundle install、どのようなエラーが発生するかを確認することです。

于 2012-05-13T03:57:09.640 に答える
0

この問題を解決する方法は次のとおりです。

rvm uninstall multi_json

多くのバージョンがインストールされていることがわかり、それらのリストが表示され、正確にどのバージョンをアンインストールするかを尋ねられます。
最初のものを試してください。他の宝石で使用されていることが示されている場合は、2番目のものを試してください。1つだけが残るまで、未使用のバージョンをすべて削除し続けます。

これが私のやり方ですが、もっと明確な解決策があるかもしれませ。誰かがそれを知っているなら、それを私たちと共有してくれてありがとう。

于 2012-05-13T14:20:15.017 に答える