繁体   English   中英

升级到Snow Leopard后的MySQL gem问题

[英]MySQL gem problem after upgrading to Snow Leopard

刚升级到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

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

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

一切顺利。 Hoorah!

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

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

然后,让我的东西:宝石卸载mysql2

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

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

export ARCHFLAGS="-arch i386 -arch x86_64"

在你sudo gem install mysql2之前

有几件事要做:

如果你没有在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 ]

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

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

此外,保持RVM相对最新也是一个好主意。 最新的转发,今晚是v1.1.13,所以如果你的年龄较大,你可能想做rvm get head赶上它。

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

我最近有一个类似的问题,当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 rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM