刚升级到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
有没有人遇到过类似的问题,知道如何解决这个问题? 我不是开发人员而是设计师,所以这不是我强大的领域。感谢任何指针。
答案 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 env
和rvm 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/