2013-11-26 8 views
3

Фон:Репроцессинг S3 с активами Paperclip

Я реализовал определенный пользователем обрезка на изображение будет загружать примерно как за Ryan Bates Railscast #182.

Это срабатывает при установке метода хранения :file, но не тогда, когда установлено значение :s3. Хранилище S3 работало нормально, прежде чем добавлять промежуточный шаг обрезки.

Из журнала сервера, это, кажется, искать исходный файл локально:

[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: /profiles/pictures/000/001/543/original/headshot.jpg is not recognized by the 'identify' command.> 

Этот файл присутствует на S3, но не локально к этому моменту, как загрузка будет обработана, прежде чем обрезать (как и после).

Мой вопрос:

Как я могу принести файл вниз от S3 к локальному серверу перед второй стадией процесса?

N.B. Я уже смотрел на другие ответы на SO.

Paperclip looking for file locally for reprocessing when using S3 - кажется актуальным, но единственный ответ относится к понижающему скреплению. Я не могу этого сделать, и, кроме того, этот ответ не поддерживается и не принимается.

Error reprocessing in Paperclip 2.3.5 - речь идет о более старой версии скрепки.

Другие мысли:

Она пришла мне в голову, что другой подход будет хранить файл локально до тех пор, пока не купированы, а затем использовать DelayedJob или что-то подобное, чтобы загрузить его на S3 позже. Это будет больше работы, поэтому, я бы предпочел избежать этого пока.

ответ

0

Чтобы лучше понять, что происходит, было бы здорово видеть, что ваша модель настроена. В частности, я ищу установку «has_attached_file».

Просто, чтобы покрыть основы того, что я ищу: вот пример

has_attached_file :picture, 
       path: <optional, default is fine.> 
       url: ':s3_alias_url', 
       s3_protocol: 'https', 
       s3_host_alias: 'cdn.<something>.com' (or, s3.amazonaws.com/bucketname/, 
       storage: :s3, 
       s3_credentials: Proc.new{ |a| a.instance.credentials } 

При повторной обработки изображения, он должен быть принесен вниз в временный файл и обрабатывается там, то перезалита с ними настройки.

, основанный на profiles/pictures/000/001/543/original/headshot.jpg, почти похоже, что он захватывает вашу переменную пути, но не подходит к вашему ведро s3, чтобы получить это изображение. поэтому я хотел бы проверить значение хранилища, в частности.

С дополнительной информацией я могу соответствующим образом обновить свой ответ.

+0

Привет, я действительно переключил все на Dragonfly некоторое время назад! Но в git исходный код был: 'has_attached_file: picture,: styles => {...},: default_url => 'missing_: class_: attachment/missing_: style.png',: storage =>: s3, : s3_credentials => S3_CONFIG' – Leo

+0

hmmm, быстрый просмотр Git для скрепки дал мне эти ссылки. В этом описании описываются изменения в настройках установки скрепки: https: // github.com/thinkbot/paperclip/issues/1405 Этот пример описывает аналогичную проблему, но через несколько лет после этого оригинального сообщения и остается открытым. https://github.com/thoughtbot/paperclip/issues/2217 Это, я считаю, что я получил свои изображения для обработки (вытащить из s3 и повторно загрузить), поэтому я попытаюсь следовать этому руководству , выстроить проект и обновить мой ответ. –

Смежные вопросы