Удалите unncessary ошибку, повышенную скрепкой - имя файла не распознано 'определить' командой

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

Модель User:

validates_attachment_content_type: аватар: 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/bin/identify

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

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

Сообщите мне, решил ли кто-либо ту же проблему и как.Большое спасибо.

5
задан kgpdeveloper 15 April 2010 в 09:22
поделиться

2 ответа

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

В моей настройке я использую 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"

На этом этапе, после перезапуска Passenger, вы увидите, что 'identify' запускается из 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 / пассажира, и он должен работать

Удачи!

2
ответ дан 15 December 2019 в 00:55
поделиться

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

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

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

1
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: