Не могу активировать драгоценный камень: как мне выяснить, какой драгоценный камень зависит от этого? - PullRequest
0 голосов
/ 18 ноября 2010

Я получаю следующую ошибку:

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"=>[]}

Ответы [ 5 ]

2 голосов
/ 18 ноября 2010

Если вы используете Bundler, вы избежите этой проблемы и получите действительно замечательную команду: bundle viz

Эта команда генерирует график со всеми зависимостями.

1 голос
/ 17 февраля 2012

Я обнаружил, что rfeedparser - это гем, который использует hpricot 0.6.

Проблема в том, что эта версия (0.6) работает с rfeedparser, но выдает предупреждение «Передача никаких параметров в XML :: SaxParser.new устарела».

Что ж, с более новыми версиями hpricot (по крайней мере, 0.8.2) это предупреждение, похоже, вступило в силу, потому что теперь наличие этой версии hpricot или новее вызывает «ArgumentError: неверное количество аргументов (1 для 0)», когда Вызов FeedParser.parse (url).

К сожалению, я обнаружил, что единственный способ заставить эту работу работать с устаревшими Rails (у нас есть приложение 2.2.2) - это удалить любую версию hpricot, отличную от 0.6.

1 голос
/ 18 ноября 2010
require 'rubygems'
require 'pp'
h = {}
Gem.source_index.each{|g, spec| h[g] = spec.dependencies.map{|d| d.name} }
pp h
0 голосов
/ 22 ноября 2010

Вы можете попробовать определить путь загрузки:

$:.each do |dir|
  cmd = %(grep -r hpricot #{dir})
  puts cmd
  puts `#{cmd}`
end
0 голосов
/ 19 ноября 2010

Проблема будет в том, что один из используемых вами гемов зависит от версии 0.6.161 hpricot и пытается его загрузить, но у вас уже загружен hpricot-0.8.3.Более свежая версия может быть загружена, если вы используете hpricot самостоятельно, и для ее использования требуется hpricot без указания версии.Если это так, вы можете изменить свое собственное требование на ту же версию, что и другие гемы (0.6.161).

Другая причина, по которой загружается более свежая версия hpricot, может заключаться в том, что другаяИспользуемый вами гем зависит от той версии hpricot, что означает, что вы не можете использовать конкретные версии этих двух гемов, поскольку у них есть конфликтующие требования для их версии hpricot.

Используйте методы, которые другие пользователи опубликовали, чтобы помочьвы отслеживаете зависимости используемых вами драгоценных камней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...