Я немного сбит с толку ... У меня на сервере работает Rails 2.3.2 после обновления с 2.1.1. Я получаю следующую ошибку на моих беспородных кластерах, когда они пытаются запустить:
Exception `Gem::LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems.rb:578 - Could not find RubyGem activerecord-mysql-adapter (>= 0)
Чем это вызвано? Я сделал:
gem install mysql
... со всей разнообразной магией, зависящей от пути, для его установки. Поиск в Google обнаруживает похожие проблемы, но без видимого решения. Любые идеи?
Больше информации:
Версии: Rails 2.3.2 (через gem
), RubyGems 1.3.4 (через gem
), Ruby 1.8.5 (через yum
), Linux 2.6.18-xen (CentOS 5.2).
Адаптер MySQL (gem install mysql
) составляет 2,7.
Странно то, что если я удалю адаптер mysql (gem uninstall mysql
) Я ожидал, что он вернется к встроенному (хотя и медленному ...?) Адаптеру MySQL. Он не действует иначе.
Основной причиной этого является особенность Rails 2.3, позволяющая внешним гемам предоставлять адаптеры подключения, а не объединять их все вместе. Кровавые подробности в activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb
если вам интересно, но в целом и вкратце: первое, что install_connection попытается сделать, - это загрузить драгоценный камень, и если это не сможет выполнить «традиционное» требование (которое загрузит встроенный mysql адаптер).
Сигнализация "неудачи" осуществляется путем повышения LoadError
, и вот тут все начинает раздражать. У Rubygems есть своя собственная LoadError
класс (Gem::LoadError
) и я считать здесь и возникает проблема, поскольку activerecord неправильно определяет, что произошел (ожидаемый) сбой, и поэтому взрывается, а не просто пытается загрузить адаптер подключения локально.
Bodgy back, о котором вы, вероятно, пожалеете в будущем, - это изменить activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb
строка 72 к:
rescue LoadError, Gem::LoadError
Правильный способ исправить это - выяснить, что пошло не так в вашей среде, что вызвало это (поскольку это, очевидно, не для всех). Мои первые предположения заключаются в том, что вы используете старую версию RubyGems (например, строка 578 rubygems.rb в версии 1.3.3 не имеет ничего общего с ошибками загрузки) или странную (возможно, устаревшую) версия Ruby. Я бы удостоверился, что вы используете последнюю версию Rubygems (Rails 2.3 требует, по крайней мере, 1.3.1 для правильной работы, что, я думаю, может быть тем, что вы делаете), и что ваша версия Ruby не тоже там (используйте 1.8.6 или 1.8.7, и я бы с осторожностью использовал 1.9 в вашей ситуации).
Если у вас все работает нормально, но проблема не устранена, предоставьте полную и исчерпывающую информацию о вашей системе (ОС, дистрибутив, источник Ruby / rubygems (пакет, из источника и т. Д.), Версии всего вышеперечисленного, любые настройки) и кто-то может решить проблему на земле. В настоящее время вы не предоставили никакой информации, которая могла бы помочь кому-либо отследить проблему.