2010-11-18 13 views
0

私は次のエラー取得しています:gemを起動できません:どのGemがこのGemに依存しているかをどのように把握しますか?

Gem::Exception: can't activate hpricot (= 0.6.161, runtime), 
already activated hpricot-0.8.3 

0.6がローカルにインストールされている、0.8.3は私のアプリで凍結されています。

これが私の「スタックトレース」です:

Loading production environment (Rails 2.3.10) 
/software/ruby-ror-gem-1.3.1/lib/rubygems.rb:149:in `activate':Gem::Exception: can't activate hpricot (= 0.6.161, runtime), already activated hpricot-0.8.3 
/e/app/www.example.com/rails/releases/20101117142713/vendor/rails/railties/lib/console_with_helpers.rb:5:NameError: uninitialized constant ApplicationController 

は私がhpricot 0.6への依存性を持っている宝石やライブラリ方法を見つけ出すのですか?


私は以下のuser438962のコマンドの出力を追加しました:

{"daemons-1.0.9"=>[], 
"scgi_dp_rails-0.0.5"=>["preforkdp", "daemons"], 
"rails-2.3.10"=>[], 
"rwfd-0.1.0"=>[], 
"nokogiri-1.3.2"=>["racc", "rexical", "rake-compiler", "hoe"], 
"activesupport-2.3.10"=>[], 
"rack-1.0.1"=> 
    ["test-spec", 
    "camping", 
    "fcgi", 
    "memcache-client", 
    "mongrel", 
    "ruby-openid", 
    "thin"], 
"rack-1.1.0"=> 
    ["test-spec", "camping", "fcgi", "memcache-client", "mongrel", "thin"], 
"preforkdp-0.1.2"=>["rwfd"], 
"activerecord-2.3.10"=>[], 
"hpricot-0.6.161"=>[], 
"cgi_multipart_eof_fix-2.5.0"=>[], 
"fastthread-1.0.1"=>[], 
"gem_plugin-0.2.3"=>[], 
"activeresource-2.3.10"=>[], 
"ferret-0.11.6"=>["rake"], 
"mysql-2.7"=>[], 
"actionmailer-2.3.10"=>[], 
"actionpack-2.3.10"=>[], 
"hpricot-0.8.3"=>[], 
"mongrel_upload_progress-0.2.2"=>["mongrel", "gem_plugin"], 
"mongrel-1.1.3"=> 
    ["gem_plugin", "daemons", "fastthread", "cgi_multipart_eof_fix"], 
"mongrel_cluster-1.0.5"=>["gem_plugin", "mongrel"], 
"rake-0.8.4"=>[], 
"haml-2.0.9"=>[], 
"remvee-mini_magick-1.2.3.4.0"=>[]} 
+1

スタックトレースはありますか?また、rvmを使用して、これらのことが起こらないようにすることを強くお勧めします。http://rvm.beginrescueend.com/ – Thilo

+0

非常に短いスタックトレースが問題に追加されています。そして、私はrvmが大好きですが、このサーバにはインストールできません。 –

+1

この質問は非常に具体的なものであり、閉じられることがあります。 –

答えて

2

あなたはバンドラーを使用する場合は、あなたがこの問題を回避し、あなたが本当に素晴らしいのコマンドを持っている:bundle viz

このコマンドをすべての依存関係を持つグラフを生成する。

+1

はい、私はそうではありません。これは従来のアプリです。 –

1
require 'rubygems' 
require 'pp' 
h = {} 
Gem.source_index.each{|g, spec| h[g] = spec.dependencies.map{|d| d.name} } 
pp h 
0

問題は、使用する宝石の一つがhpricotバージョン0.6.161 に依存し、それをロードしようとしますが、あなたはすでにhpricot-0.8.3がロードされていることがあることになります。 hpricotを自分で使用している場合は、最新のバージョンが読み込まれ、バージョンを指定しないで使用するにはhpricotが必要です。その場合、他のgemの使用と同じバージョン(0.6.161)にする必要があります。

さらに最近のバージョンのhpricotがロードされている別の理由は、使用している別の宝石がhpricotのバージョンに依存している可能性があります。つまり、それらの2つの宝石の特定のバージョンを使用できませんhpricotバージョンの要件

他のユーザーが投稿した方法を使用して、使用している宝石の依存関係を追跡するのに役立ててください。

+0

私は0.8.3バージョンのhpricotを使用しています - それは、0.6.161バージョンへの依存性を持つ宝石を見つけることができないことだけです。依存関係の出力を質問に追加しました。 –

+0

私は3を使用しているので、明らかにすべてのローカルにインストールされた宝石がロードされますが、私は理由が分かりません。 –

+0

hpricot 0.6.161を販売しているあなたのレールアプリにプラグインまたは宝石が含まれている可能性がありますか? 'vendor/plugins/**/vendor /'と 'vendor/gems/**/vendor /'をチェックしてそこにhpricotがあるかどうか確認してください。彼らはそのバージョンで凍った宝石を持っているかもしれませんが、それを特定していません。 – Jeremy

0

あなたはロードパスをgrepを試みることができる:

$:.each do |dir| 
    cmd = %(grep -r hpricot #{dir}) 
    puts cmd 
    puts `#{cmd}` 
end 
1

私はrfeedparserがhpricotに0.6を使用しています宝石であることを見出しました。

このバージョン(0.6)はrfeedparserとともに動作しますが、「パラメータをXML :: SaxParser.newに渡すことは推奨されていません」という警告が表示されます。

新しいバージョンのhpricot(少なくとも0.8.2以上)では、このバージョンのhpricot以降では "ArgumentError:引数の数が正しくありません(0の場合は1)"という理由でこの警告が発効したようです。 FeedParser.parse(url)を呼び出すとき

残念ながら、私は、従来のRails(2.2.2アプリがあります)でこの作業を行う唯一の方法は、0.6ではないhpricotのバージョンをアンインストールすることです。

関連する問題