Подтвердить что ты не робот

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"
4b9b3361

Ответ 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.

Решил его...

  • сделайте a brew list, чтобы увидеть все имеющиеся у вас пакеты и сохранить это где-нибудь

  • удаление homebrew (см. "Удаление" на этой странице https://github.com/mxcl/homebrew/wiki/Installation)

  • переустановите homebrew с помощью обычного

    ruby ​​-e "$ (curl -fsSL https://raw.github.com/gist/323731)"

  • переустановка всех пакетов brew install ghostscript brew install imagemagick и т.д. для любых других

Обратите внимание, что перед тем, как 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. Перезагрузили сервер, и он работал как шарм!

Ответ 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 и почувствуйте восторг, когда ваши изображения будут правильно загружать/изменять размер.