2012-05-13 11 views
2

私はnginx/unicorn/sinatra(bundler/rvm)で動作しているサイトを持っています。 私の最後のbundle updateした後、私はエラーを取得しています:バンドルされた宝石とdatamapperの問題:muti_jsonバージョンとの競合?

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は1.0.3

任意のアイデアをmulti_jsonへの参照を持っていませんか?

+0

問題は、omniauth-twitterとdm-serializerで異なるバージョンのmulti_jsonをロックしようとしたときに発生しました。 omn​​iauth-tewiterの最新バージョンをアンインストールし、そのバージョンを0.0.9にロックするのが助かりました – UncleGene

答えて

1

ソリューションでした:

  • チェックGemfile.lockがどの宝石(複数可)を参照してください(この場合は - omniauth-さえずり)以降のバージョンで持って
  • はしていません「犯罪者」のバージョンを探します高すぎるのバージョンを必要と
  • ロールバック以降のバージョンでは、必要な行を作品Gemfileで適切なバージョンのこの特定のケースで

、Gemfileにロック:

gem 'omniauth-twitter', '0.0.9' 
gem 'multi_json', '~> 1.0.3' 
0

バンドル内の宝石の1つに、より古いバージョンのmulti_jsonがあります。 bundle vizがあなたに告げるかどうかを見てください。あなたがすでにインストールされていない場合は、ruby-graphviz gemとgraphviz自体をインストールする必要があります。

最新のものを確認する別の方法は、アップグレードしようとしているバージョンのをgemfileに追加してから、bundle installを実行してエラーが表示されるのを見てください。

+0

私はmulti_jsonのどのバージョンもインストールしようとしていません。それは依存関係です。すべてのバージョンを強制しようとすると、エラーが解決しません。 – UncleGene

+1

私はそれを理解しています。私がしようとしているのは、1.0.3を使っている宝石を見つけ出すことです。 – x1a4

+0

これはdm-serializerの明示的な依存関係です。私が理解できないことは、multi_jsonを1.0.3にロックすると、同じエラー(Gemfile.lockの上位バージョンへの参照なし)が得られるということです。 – UncleGene

0

これは、この問題を解決する方法である:

rvm uninstall multi_json 

それは、あなたは多くのバージョンがインストールされていることを教えてくれ、あなたにそれらのリストを表示し、正確にあなたがアンインストールする1を聞いてきます。
他の宝石で使用されていることを伝える場合は最初のものを試し、もう1つは試してみてください。 1つだけ残るまで、未使用のバージョンをすべて削除してください。

これは私のやり方ですが、clearnerの解決策があります。誰もがそれを知っている場合は、私たちと共有していただきありがとうございます。

関連する問題