Удалите ненужную ошибку, возникшую из-за скрепки - имя файла не распознается командой «identifier» - PullRequest
5 голосов
/ 15 апреля 2010

Я искал, как решить эту проблему, но не смог найти никакого реального и работающего решения.

Модель пользователя:

validates_attachment_content_type: avatar,: content_type => ['image / jpeg', 'image / pjpeg', 'image / x-png', 'image / png', 'image / gif']

При загрузке файла недопустимого типа отображается ненужная ошибка:

Avatar /tmp/sample,23283,0.txt is not recognized by the 'identify' command.

Данные сервера: Ubuntu и Debian

которые определяют результаты к / USR / бен / идентифицировать

Указание пути к команде не решает проблему:

Paperclip.options[:command_path] = "/usr/bin"

Есть идеи?

Я посмотрел на файл geometry.rb, и, похоже, с ним что-то не так.

def self.from_file file
  file = file.path if file.respond_to? "path"
  geometry = begin
               Paperclip.run("identify", %Q[-format "%wx%h" "#{file}"[0]])
             rescue PaperclipCommandLineError
               ""
             end
  parse(geometry) ||
    raise(NotIdentifiedByImageMagickError.new("#{file} is not recognized by the 'identify' command."))
end

Дайте мне знать, если кто-нибудь решил ту же проблему и как. Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

У меня была такая же проблема - код Paperclip не виноват.

В моей настройке я нахожусь на MacOSX с бинарной загрузкой ImageMagick в /usr/local/ImageMagick-6.6.1/bin и Я использую Rails под Apache / Passenger. У меня установлен плагин Paperclip.

Для этого нужно выполнить 3 шага:

1: убедитесь, что ImageMagick работает на уровне командной строки UNIX. Это включает добавление его к вашему пути и экспорт этих переменных среды (конечно, указывая на вашу установку ImageMagick)

MAGICK_HOME=/usr/local/ImageMagick-6.6.1
DYLD_LIBRARY_PATH=/usr/local/ImageMagick-6.6.1/lib

Убедитесь, что идентификатор работает с вашими изображениями на уровне командной строки.

2: Сообщите Paperclip, где найти исполняемые файлы ImageMagick В config / environment.rb добавьте это внизу файла

Paperclip.options[:command_path] = "/usr/local/ImageMagick-6.6.1/bin"

В этот момент, после перезапуска Пассажира, вы увидите, что «идентификация» запускается из Paperclip, но не может идентифицировать файл ... последний шаг - ...

3: Определите потребности этих двух экспортируемых переменных среды - и Apache / Passenger (или, возможно, другие веб-серверы) не пропускает их по умолчанию! В файле vhost пассажира добавьте эти строки:

  SetEnv MAGICK_HOME /usr/local/ImageMagick-6.6.1
  SetEnv DYLD_LIBRARY_PATH /usr/local/ImageMagick-6.6.1/lib

Перезапустите Apache / пассажир, и он должен работать

Удачи!

1 голос
/ 31 июля 2010
1 голос
/ 15 апреля 2010

У вас должен быть установлен imagemagick , который предоставляет команду identifier , и его путь должен быть в переменной $PATH пользовательских рельсов, работающих как.

Он используется скрепкой для параметров масштабирования и манипулирования изображениями, но не документируется как зависимость, потому что вы можете "использовать" скрепку без нее, если вы принимаете изображения по мере их поступления.

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

...