Ошибка с изображениями .webp при использовании Active Storage на Heroku - PullRequest
0 голосов
/ 05 сентября 2018

Когда я использую Active Storage и когда кто-то загружает образ .webp, и когда я запускаю file.attach(io: webp_file, filename: 'file.webp'), он работает, и затем ActiveStorage автоматически запускает задание ActiveStorage::AnalyzeJob

Но эта работа поднимает:

MiniMagick::Error (`identify -format %[orientation] /tmp/ActiveStorage-114989-20180905-4-wak8ob.webp[0]` failed with error:
identify-im6.q16: delegate failed `'dwebp' -pam '%i' -o '%o'' @ error/delegate.c/InvokeDelegate/1919.
identify-im6.q16: unable to open file `/tmp/magick-1400SWBHj-p67HrV': No such file or directory @ error/constitute.c/ReadImage/544.

Хотя я на Heroku-18, и поэтому есть библиотека под названием "libwepb6" (https://devcenter.heroku.com/articles/stack-packages) ?

Нужно ли создавать сборку Heroku?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Была такая же проблема. Вот шаг за шагом:

1 - Добавьте это в development.rb и production.rb, чтобы заставить rails принимать WEBP.

config.active_storage.variable_content_types = %w(
  image/png
  image/gif
  image/jpg
  image/jpeg
  image/webp
  image/vnd.adobe.photoshop
  image/vnd.microsoft.icon
)

2 - Добавьте этот buildpack в свое приложение на heroku, убедившись, что это первый пакет. Это позволяет вам устанавливать пакеты Ubuntu, которые еще не установлены.

3 - Перейдите в корень вашего приложения (где находится ваш Gemfile) и выполните команды ниже, чтобы создать файл с именем AptFile, и добавьте в него пакет webp.

touch Aptfile
echo "webp" >> Aptfile 

4 - Повторно разверните приложение.

Теперь Heroku установит отсутствующий пакет webp, который необходим imagemagick для обработки изображений webp.

0 голосов
/ 05 сентября 2018

Редактировать: поэтому используется S3 и /tmp для манипуляции.

Глядя на ошибку, она, похоже, нормально передает dwebp, поэтому я должен предположить, что она была построена правильно. Если бы он не был построен с помощью webp, вы получите ошибку делегата, например,

identify.im6: no decode delegate for this image format `1.sm.webp' @ error/constitute.c/ReadImage/544.

Вы можете убедиться, запустив heroku run "identify -list format | grep -i WebP"

Ошибка, по-видимому, связана с доступом к каталогу /tmp/. Как обстоят дела с космосом? df -h

Обратите внимание, что на Mac я получаю это, обратите внимание на использование каталога /var:

~/w/p ❯❯❯ identify 1.sm.webp
Decoded /var/folders/lk/z_bvyjj939d94mvkx6rz9700fbx9gg/T/magick-99980zzj1IT0Lkx7L. Dimensions: 320 x 214 . Format: lossy. Now saving...
Saved file /var/folders/lk/z_bvyjj939d94mvkx6rz9700fbx9gg/T/magick-999803WU_TvRo7xdJ
1.sm.webp PAM 320x214 320x214+0+0 8-bit TrueColor sRGB 273989B 0.000u 0:00.000

Вероятно, этот сотрудник Героку прояснит это.

В этой статье также подробно рассматриваются https://devcenter.heroku.com/articles/active-storage-on-heroku, особенно этот пункт:

Во время загрузки файлов, которые хранятся с опцией: local, появится работать вначале, приложения будут показаться, казалось бы, странно поведение и в конечном итоге исчезнет.

с рекомендациями по использованию облачного хранилища (например, Amazon S3).

...