升级到Snow Leopard后的MySQL gem问题

时间:2010-12-29 13:09:20

标签: mysql ruby-on-rails ruby osx-snow-leopard gem

刚升级到Snow Leopard。经过一番混乱之后,我设法让MySQL运行起来。

现在我正在努力让我的Rails环境正常工作。对于我正在使用 Rails 3.0.3和Ruby 1.8.7

的项目

我使用以下命令安装了MySQL2 gem:

sudo gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

当我启动rails服务器时,我收到以下错误:

/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): no suitable image found.  Did find: (LoadError)
/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: mach-o, but wrong architecture - /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
from /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2.rb:7

有没有人遇到过类似的问题,知道如何解决这个问题? 我不是开发人员而是设计师,所以这不是我强大的领域。感谢任何指针。

4 个答案:

答案 0 :(得分:3)

卸载/删除rvm,ruby和rails的所有实例,然后按照本指南进行全新安装: http://www.cowboycoded.com/2010/12/04/setting-up-rails-3-on-mac-osx-snow-leopard-10-6-4/

一切顺利。 Hoorah!

同样在一个阶段降级MySQL,所以不确定这是否会对最终结果产生影响。

答案 1 :(得分:0)

在升级到Snow Leopard之后,我昨天和其他一些宝石一起经历了这样的事情。我得到了非常相似的错误,因为当SL正在寻找64位版本时,它试图使用旧的32位库。首先,请确保已安装64位版本的MySQL,因为您现在将使用它。

然后,让我得到的东西:gem uninstall mysql2

原来我安装了两次gem并且Rails试图加载错误的(32位)版本,即使我在其他地方安装了正确的版本。

此外,当您安装mysql gem时,您可能想尝试

export ARCHFLAGS="-arch i386 -arch x86_64"

在sudo gem install mysql2之前

答案 2 :(得分:0)

有几件事要做:

如果你没有在RVM的控制下重新编译Ruby,你就会想要这样做。在Snow Leopard之前,他们将编译为i386 32位应用程序。之后,他们需要x86 64位。因此,使用RVM在Ruby 1.8.7上执行rvm uninstall,然后再次使用rvm install。您可以通过运行rvm list

来检查是否需要执行此操作
rvm list

rvm rubies

   ruby-1.8.7-p330 [ x86_64 ]
=> ruby-1.9.2-p136 [ x86_64 ]

Ruby(1.8.7或1.9+)在为Snow Leopard正确配置时将为x86_64。

之后,您可以运行gem pristine来重建所有宝石。作为该过程的一部分,它将重建本机驱动程序,它们也应重新编译为x86_64。

此外,保持RVM相对最新也是一个好主意。截至今晚的最新版本是v1.1.13,所以如果你的年龄较大,你可能想要rvm get head来追赶它。

有助于诊断事物的有用命令是:gem envrvm info

答案 3 :(得分:0)

我最近遇到了类似的问题,当启动rails控制台或rails服务器时,rails正在抛出“但错误的架构没有找到合适的映像”错误。

在关联的.dylib文件和gem上运行file通常会返回适用的x86_64版本或包含它的通用版本。最后,我追溯到我正在运行的Ruby的实际版本。 / usr / bin / ruby​​可执行文件本身只与i386兼容。这真是令人震惊,因为我认为新的xcode和osx 10.7会给我带来64位红宝石。

使用RVM,我安装了另一个ruby实例(同样是1.8.7)。这样做需要我安装一个新的readline实例(我使用自制软件,brew install readline)并使用rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/安装了rvm。

执行此操作后,切换到使用我的新ruby实例(rvm use 1.8.7),我的所有宝石都消失了(RVM安装以某种方式更改了我的默认gem_path。)gem install rake,然后是{{1 }},然后gem install bundler让我振作起来。

简而言之,请确保您的ruby可执行文件与您的ruby / rails软件包内置的指令集版本相匹配。

此博客文章也非常有用: http://www.markhneedham.com/blog/2010/07/08/installing-ruby-1-9-2-with-rvm-on-snow-leopard/