Rails paperclip и пассажир `не распознается командой 'ident'
Когда я загружаю фотографию, моя модель терпит неудачу в проверке, ошибается даже без каких-либо проверок. Я возвращаю эту ошибку:
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command. and
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command.
Я уверен, что это не связано с ImageMagick, потому что я удалил любую обработку изображений из загрузки, также я попытался загрузить различные типы mime, такие как .txt файлы и т.д.
Кроме того, я нашел что-то, что может сработать. Сообщение в блоге утверждает, что в моей среде (в данном случае development.rb) было указано следующее:
Paperclip.options[:command_path] = "/opt/local/bin"
Ответы
Ответ 1
Это связано с ImageMagick. Параметр command_path
должен указывать на место, где установлен identify
. Из командной строки вы можете определить это с помощью which identify
.
$ which identify
/some/path/to/identify
Затем установите command_path
на этот путь (в config/environments/development.rb
):
Paperclip.options[:command_path] = "/some/path/to"
Ответ 2
Это также может быть вызвано использованием довольно старых версий Paperclip
(например, версии 2.4.x) с новыми, несовместимыми версиями Cocaine
gem.
Ответ 3
Мне удалось решить эту проблему, выполнив следующие действия:
brew uninstall imagemagick
brew install imagemagick
Ответ 4
Это случилось со мной, когда я обновил OS X до Lion.
Решил его...
Обратите внимание, что перед тем, как ghostscript переустановит, мне пришлось применить предложенное здесь предложение: https://github.com/mxcl/homebrew/issues/6381
brew edit ghostscript
Затем добавьте блок def patches
в нижнюю часть класса Ghostscript:
class Ghostscript < Formula
.... existing code here ....
def patches
{ :p0 => 'http://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/print/ghostscript/patches/patch-ak' }
end
end
Этот патч может быть объединен к тому моменту, когда вы прочтете это.
После этого imagemagick снова обнаружит jpegs снова.
TL; DR полностью удаляет и переустанавливает homebrew, ghostscript (с патчем для Lion) и imagemagick
Ответ 5
Я начал работать, установив brew, http://mxcl.github.com/homebrew/
И затем я набрал:
brew install imagemagick
и после этого
gem install rmagick
Затем я просто удалил пути опций (Paperclip.options [: command_path] = "..." )
что я набрал вручную в среде /development.rb и initialize/paperclip.rb
Добавлен файл rmagick в gem. Перезагрузили сервер, и он работал как шарм!
Ответ 6
Это работало от http://arglebargle.posterous.com/path-environment-variable-for-rails-using-pas
Поместите что-то подобное в VirtualHost (или там, где установлен пассажир):
SetEnv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin
Ответ 7
Чтобы добавить еще одно потенциальное решение, которое я не видел, много обсуждал: ldconfig
.
У меня была та же самая проблема, что я провел всего полтора дня. Я правильно переустановил ImageMagick из источника с дополнительной поддержкой png и jpeg, я добавил переменные окружения LD_LIBRARY_PATH
и DYLD_LIBRARY_PATH
, я установил параметр :command_path
для Paperclip в моей конфигурации рабочей среды. Хотя команды ImageMagick работали из командной строки, ничто не фиксировало мою проблему с Paperclip.
Наконец, увидев ldconfig
, упомянутый попутно, я попробовал это по прихоти, и он сработал.
sudo ldconfig
Возможно, я смог выполнить одно и то же, перезапустив apache или аппаратное обеспечение, но я не смог сделать это сам.
Ответ 8
Вы также получите это сообщение об ошибке, если попытаетесь загрузить файл с двоеточиями в имени с последней версией.
Ответ 9
Обычно это помогает указать путь к команде идентификации с помощью.
Paperclip.options[:command_path] = "/your/path/to/identify"
.. как говорили другие. Но проблема также может возникнуть, если есть несоответствие версии, я недавно обновил версию приложения Ruby-on-Rails (до Rails 3.1.10), но забыл обновить драгоценный камень скрепки. После того как я обновил версию paperclip до версии 2.8.0, она снова работала.
Ответ 10
если вы пытаетесь загрузить видео, то, вероятно, "идентифицировать" пытается делегировать работу ffmpeg. Пример
identify Desktop/00-ScalingRails-Introduction.mp4 [[email protected]>/home/alaa]
identify: delegate failed `"ffmpeg" -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"' @ error/delegate.c/InvokeDelegate/1061.
identify: unable to open image `/tmp/magick-XXHF4ImT.pam': @ error/blob.c/OpenBlob/2498
в этом примере установка ffmpeg удалила сообщение об ошибке из списка ошибок проверки
Ответ 11
Просто чтобы сказать, вы также можете получить это сообщение об ошибке, что оно означает.
В моем случае размер файла был 0 байтов, потому что я забыл его очистить после записи из Zip и передать этот ресурс в папку "Скрепка".
Возможно, вам будет интересно проверить, действительно ли вы можете открыть файл у своего предпочтительного зрителя, прежде чем читать другой ответ из этого потока:)
Ответ 12
Если вы являетесь пользователем Mac, и это было проблемой только после обновления ОС до 10.8, то это может быть проблема X11, как описано здесь http://support.apple.com/kb/HT5293
идентифицировать ~/путь/to/image
Не работал у меня даже после того, как все вышеперечисленные исправления были исправлены.
Я установил XQuartz из http://xquartz.macosforge.org/landing/, и теперь он снова работает.
Может помочь другим тоже...
Ответ 13
что также случилось со мной, я пробовал весь метод, упомянутый выше.
Я просто изменяю версию скрепки, тогда все работает нормально.
Ответ 14
У меня возникла эта проблема при использовании OSX + MAMP + Passenger + Paperclip и после установки параметра command_path и обеспечения правильной установки imagemagick с помощью brew, правильной установки темпа и загрузки каталогов для пассажира на что-то перезаписываемое, оно все равно не будет работа!
Решением было отредактировать файл envvars для MAMP в /Applications/MAMP/Library/bin/envvars и закомментировать строку экспорта DYLD_LIBRARY_PATH.
То есть, измените строку, в которой говорится
export DYLD_LIBRARY_PATH
к
# export DYLD_LIBRARY_PATH
Затем перезапустите MAMP и почувствуйте восторг, когда ваши изображения будут правильно загружать/изменять размер.