我有点困惑…我从2.1.1升级后,我的服务器上运行Rails 2.3.2我试图启动时,我的杂种群集上出现以下错误:
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
…具有所有各种特定path的魔法,使其安装。 谷歌search显示一些类似的问题,但没有明显的解决办法 有任何想法吗?
更多信息:
版本: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 ),我希望它恢复到内置(尽pipe很慢?)MySQL适配器。 它没有任何不同。
Rails 2.3的基本原因是允许外部的gem提供连接适配器,而不是将它们全部捆绑在一起。 如果你感兴趣的话,血腥详细信息在activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb ,但是最重要的一点是establish_connection要做的第一件事是加载创业板,如果没有做到“传统”的要求(这将加载内置的MySQL适配器)。
LoadError “失败”信号是通过引发LoadError来完成的,这里是烦人的地方。 Rubygems有它自己的LoadError类( Gem::LoadError ),我认为这是问题的来源,因为activerecord没有正确地检测到(预期的)失败发生,所以轰炸出来而不是尝试在本地加载连接适配器。
Bodgy回来说,你可能会后悔的做法是将activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb行72改为:
rescue LoadError, Gem::LoadError
解决这个问题的正确方法是弄清楚在你的环境中出了什么问题导致了这个问题(因为它显然不会为所有人打破)。 我的第一个猜测是你正在运行一个旧版本的RubyGems(rubygems.rb在1.3.3版本中的第578行,与加载错误无关),或者是一个奇怪的(可能是过时的) Ruby的版本。 我确定你正在运行一个最新的Rubygems(Rails 2.3需要至less1.3.1才能正常运行,我想这可能是你正在做的),而且你的Ruby版本不是在那里(使用1.8.6或1.8.7,我会警惕在你的情况下使用1.9)。
如果你正在运行所有的问题,并且问题仍然存在,请给出你的系统(操作系统,发行版,Ruby / rubygems(软件包,源代码等),以上所有版本,任何定制)的完整详细信息。有人可以解决问题。 就目前而言,你没有提供任何帮助任何人帮助追踪问题的信息。