RMagick замораживает процессы ruby, когда это необходимо в OS X Snow Leopard

У меня довольно странная проблема. Я установил ImageMagick через доморощенный.

Я установил rmagick-2.12.2 и rmagick-2.11.2 без проблем.

Я не получаю никаких ошибок при установке ни того, ни другого.

ImageMagick, кажется, установлен и находится на моем пути:

$ convert --version
Version: ImageMagick 6.5.6-5 2010-01-30 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC

Однако, как только RMagick загружается или требуется в приложении rails, irb, скрипте ruby ​​и т. д., процесс ruby ​​полностью зависает, и его можно убить только через kill -9.

Я не уверен, как отладить проблему, поскольку никогда не появляется сообщение об ошибке или трассировка стека. У кого-нибудь есть предложения?


person BJ Clark    schedule 03.02.2010    source источник


Ответы (3)


RMagick и Ruby 1.8.6 больше не совместимы на Snow Leopard из-за неясной ошибки в Ruby, которая еще не была перенесена.

Чтобы использовать RMagick и Ruby на Snow Leopard, убедитесь, что вы используете Ruby 1.8.7 или более позднюю версию.

person BJ Clark    schedule 05.02.2010

Чтобы обойти это, я удалил гем rmagick и версию imagemagick для macports, а затем переустановил imagemagick с помощью установщика здесь: http://github.com/masterkain/ImageMagick-sl. Затем я переустановил гем rmagick.

По какой-то причине это не вызывает, но упоминалось в предыдущем посте, и rmagick успешно загрузится.

person Mike Dotterer    schedule 09.02.2010
comment
Это сработало и для меня, но убедитесь, что вы используете более старую версию этого скрипта, которая использует ImageMagick 6.5, а не 6.6. - person pjb3; 22.06.2010

Рассматривали ли вы просто использование MiniMagick, http://rubyforge.org/projects/mini-magick/ вместо использования RMagick? Я очень широко использовал RMagick и могу сказать, что в конечном итоге вы откажетесь от него. Будет ли это сейчас, потому что это больно устанавливать, или позже, потому что это так интенсивно использует память и приводит к сбою случайных пассажирских/дворняжных процессов, какая на самом деле разница.

MiniMagick предоставляет функции, аналогичные RMagick, но является оболочкой для версии convert из командной строки и гораздо более стабилен, поскольку не пытается вызывать API ImageMagick и управлять большими двоичными объектами в памяти, как это делает RMagick.

person Douglas Sellers    schedule 04.02.2010
comment
К сожалению, переход на мини-магию находится вне моего контроля. - person BJ Clark; 05.02.2010