Mac OSX Lion и Ruby - [FATAL] не удалось выделить память
У меня есть серьезная проблема с Ruby и OSX Lion - всякий раз, когда я пытаюсь запустить Rails или даже инструмент rake, я получаю эту ошибку:
[FATAL] failed to allocate memory
Я попытался перекомпилировать ruby в разных версиях (1.9.2-p180, 1.9.2-p290, 1.9.2-head), и он всегда один и тот же.
Однако я заметил, что я могу удалить некоторые драгоценные камни, а затем инструмент "грабли" будет работать, и только "рельсы s" умрут с этой ошибкой. Кажется, на самом деле недостаточно памяти для этого количества драгоценных камней, которые я использую, но опять же это кажется очень странным - он отлично работает на Snow Leopard и даже в моей компании на mac mini с Lion - единственное различие заключается в том, что mini обновлен Snow Leopard → Lion, а на моем iMac - чистая установка Lion.
Любые идеи? Есть ли какая-либо настройка для увеличения памяти на OSX/Lion?
Ответы
Ответ 1
Мне потребовалось некоторое время, чтобы понять это, но вот решение:
Эта проблема была вызвана камнем mysql2
, когда я переключился на ruby-mysql
, все это снова заработало (не забудьте изменить адаптер от mysql2
до mysql
в database.yml
!)
Итак, я начал думать о различиях между mac mini и iMac. В основном мини работает Lion, обновленный от Snow Leopard, который обновлен Leopard, и у него есть хорошие старые Mac-порты для серверов mysql и pgsql. Поэтому, когда gem скомпилирован с использованием библиотек портов.
С другой стороны, iMac со свежей установкой Lion имеет пакет Zend Server (двоичные файлы apache + php + mysql) и пакет "mysql-connector-c" в стиле Homebrew, в котором есть библиотеки, необходимые для компиляции драгоценных камней.
В целом, похоже, что версия mysql для портов работает правильно, в то время как коннектор Homewbrew не выполняет (его утечка некоторой памяти?).
Надеюсь, что это поможет.
Ответ 2
Я удалил mysql2
$ gem uninstall mysql2
И переустановить через bundler
$ bundle
И я снова могу rails s
Ответ 3
У меня был конфликтный пакет mysql-connector-c
из homebrew. mysql2 использовал dylib из этого пакета, а не из mysql install.
Удаление пакета homebrew дало еще одну проблему, которую можно было бы решить, добавив
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"
в мою среду.