Mac OSX Lion и Ruby - [FATAL] не удалось выделить память - PullRequest
10 голосов
/ 14 августа 2011

У меня серьезная проблема с Ruby и OSX Lion - всякий раз, когда я пытаюсь запустить Rails или даже инструмент rake, я получаю эту ошибку:

[FATAL] failed to allocate memory

Я пытался перекомпилировать ruby ​​в разных версиях (1.9.2-p180, 1.9.2-p290, 1.9.2-head) и он всегда один и тот же.

Однако я заметил, что могу удалить некоторые драгоценные камни, и тогда инструмент "rake" будет работать и только 'rails s'умрет с этой ошибкой.Кажется, что на самом деле не хватает памяти для такого количества драгоценных камней, которые я использую, но опять же это кажется очень странным - он отлично работает на Snow Leopard и даже в моей компании на Mac mini с Lion - единственное отличие состоит в том, чтоmini обновлен Snow Leopard -> Lion, в то время как на моем iMac установлена ​​чистая версия Lion.

Есть идеи?Есть ли какая-нибудь настройка для увеличения памяти в OSX / Lion?

Ответы [ 3 ]

7 голосов
/ 16 августа 2011

Мне потребовалось некоторое время, чтобы понять это, но вот решение:

Эта проблема была вызвана mysql2 gem, когда я переключился на ruby-mysql, все это снова заработало (не забудьте изменитьАдаптер от mysql2 до mysql в вашем database.yml!)

Поэтому я начал задумываться о различиях между Mac mini и iMac.По сути, мини использует Lion, обновленный со Snow Leopard, который является обновленным Leopard и имеет старые добрые порты Mac для серверов mysql и pgsql.Поэтому, когда gem компилируется, он использует библиотеки портов.

С другой стороны, iMac со свежей установкой Lion имеет пакет Zend Server (apache + php + mysql) и пакет Homebrew «mysql-connector-c», которыйесть библиотеки, необходимые для компиляции gem.

В целом, похоже, что версия портов mysql работает правильно, а коннектор Homewbrew - нет (утечка памяти?).

Надеюсь, это поможет.

4 голосов
/ 18 декабря 2011

Я удалил mysql2

$ gem uninstall mysql2

и переустанавливается через упаковщик

$ bundle

И я могу rails s еще раз

3 голосов
/ 13 сентября 2011

У меня был конфликтующий пакет mysql-connector-c от homebrew.mysql2 использовал dylib из этого пакета, а не из установки mysql.Удаление пакета homebrew привело к другой проблеме, которую можно решить, добавив

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

в мою среду.

...