【问题标题】:Mac OSX Lion and Ruby - [FATAL] failed to allocate memoryMac OSX Lion 和 Ruby - [致命] 分配内存失败
【发布时间】:2011-08-14 09:56:39
【问题描述】:

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

[FATAL] failed to allocate memory

我尝试在不同版本(1.9.2-p180、1.9.2-p290、1.9.2-head)中重新编译 ruby​​,但始终相同。

但是我注意到我可以删除一些宝石,然后“rake”工具将起作用,并且只有“rails s”会因该错误而死。似乎实际上没有足够的内存来存储我正在使用的这么多宝石,但这又看起来很奇怪——它在 Snow Leopard 上运行得非常好,甚至在我的公司在带有 Lion 的 mac mini 上运行良好——唯一的区别是mini 升级了 Snow Leopard -> Lion,而在我的 iMac 上它是一个干净的 Lion 安装。

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

【问题讨论】:

    标签: ruby osx-lion


    【解决方案1】:

    我花了一些时间才弄清楚,但这里是解决方案:

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

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

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

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

    希望这会有所帮助。

    【解决方案2】:

    我卸载了mysql2

    $ gem uninstall mysql2
    

    并通过捆绑器重新安装

    $ bundle
    

    我可以再次rails s

    【讨论】:

      【解决方案3】:

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

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

      到我的环境。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-13
        • 2013-09-12
        • 1970-01-01
        • 2013-04-13
        • 2012-03-20
        • 2012-06-05
        • 1970-01-01
        • 2018-08-15
        相关资源
        最近更新 更多