Mac OSX Lion和Ruby – 无法分配内存

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

[FATAL] failed to allocate memory 

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

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

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

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

这个问题是由mysql2 gem引起的,当我切换到ruby-mysql它全部重新开始工作(记得在你的database.yml中将适配器从mysql2更改为mysql !)

所以我开始考虑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连接器没有(它泄漏了一些内存?)。

希望这可以帮助。

我卸载了mysql2

 $ gem uninstall mysql2 

并通过bundler重新安装

 $ bundle 

而且我能够再次使用它

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

 export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/" 

对我的环境。