Mac OSX Lion和Ruby - [FATAL]无法分配内存

时间:2011-08-14 09:56:40

标签: ruby osx-lion

我对Ruby和OSX Lion存在严重问题 - 每当我尝试启动Rails甚至是rake工具时,我都会收到此错误:

[FATAL] failed to allocate memory

我尝试重新编译不同版本的红宝石(1.9.2-p180,1.9.2-p290,1.9.2-head),它总是一样的。

然而,我注意到我可以移除一些宝石,然后“rake”工具将起作用,只有'rails s'会因该错误而死亡。事实上,对于我正在使用的这些宝石来说,实际上没有足够的内存,但这看起来非常奇怪 - 它在Snow Leopard上工作得非常好,甚至在我的公司与Lion上的mac mini上 - 唯一的区别在于mini升级版Snow Leopard - > Lion,虽然在我的iMac上是一个干净的狮子装置。

有什么想法吗?是否有某种设置可以增加OSX / Lion的内存?

3 个答案:

答案 0 :(得分:7)

花了一些时间来弄明白,但这是解决方案:

此问题是由mysql2 gem引起的,当我切换到ruby-mysql时,它全部重新开始工作(请记住将mysql2中的适配器更改为mysql database.yml 1}}!)

所以我开始考虑mac mini和iMac之间的区别。基本上迷你运行Lion从Snow Leopard升级,它是升级的Leopard,它有很好的旧Mac端口用于mysql和pgsql服务器。所以当gem编译时使用端口库。

另一方面,带有全新Lion安装的iMac有Zend Server软件包(apache + php + mysql二进制文件)和一个Homebrew软件包'mysql-connector-c',它包含编译gem所需的库。

总而言之,似乎mysql的ports版本正常工作,而Homewbrew连接器却没有(它泄漏了一些内存?)。

希望这有帮助。

答案 1 :(得分:4)

我卸载了mysql2

$ gem uninstall mysql2

并通过捆绑器重新安装

$ bundle

我可以再次rails s

答案 2 :(得分:3)

我安装了自制软件包mysql-connector-c。 mysql2使用了这个包中的dylib而不是mysql安装。 删除自制软件包产生了另一个问题,可以通过添加

来解决
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"

到我的环境。