Я искал о том, как решить эту проблему, но не мог найти реальное и рабочее решение.
Модель 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
Сообщите мне, решил ли кто-либо ту же проблему и как.Большое спасибо.
У меня была та же проблема - код скрепки не виноват.
В моей настройке я использую 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 / пассажира, и он должен работать
Удачи!
У вас должен быть установлен imagemagick , который предоставляет команду identify , и ее путь должен быть в $ PATH
переменная пользовательских рельсов работает как.
Он используется скрепкой для масштабирования и опций манипулирования изображениями, но не задокументирован как зависимость, потому что вы «можете» использовать скрепку без нее, если вы принимаете изображения в том виде, в каком они поступают.
Надеюсь, это поможет.