Миграция вложений S3 - PullRequest
       18

Миграция вложений S3

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

Поскольку скрепка устарела, я переносил свое приложение на использование Active Storage вместо paperclip.Я запустил миграцию для новой структуры базы данных и создал соответствующие модели, чтобы сопоставить все объекты с вложением.Однако я следую этому руководству: https://github.com/thoughtbot/paperclip/blob/master/MIGRATING.md

У меня проблемы с перемещением файлов на удаленном хосте.Я создал грабли для выполнения этой задачи, которая выглядит примерно так:

User.where.not(avatar_file_name: nil).find_each do |user|
  avatar = user.avatar_file_name
  ext = File.extname(avatar)
  avatar_original = CGI.unescape(avatar.gsub(ext, "_original#{ext}"))
  avatar_url = "https://s3.amazonaws.com/my_bucket/users/avatars/000/000/#{user.id}/#{avatar_original}"
  user.avatar.attach(io: open(avatar_url),
                         filename: user.avatar_file_name,
                         content_type: user.avatar_content_type)
end

После запуска этой задачи мои модели говорят, что они подключили аватары, и я могу запустить some_user.avatar и получить ActiveStorage :: Attachmentответ обратно.Однако я не вижу новые вложения в моем S3 ведро.Из того, что я понял, выполнение этой задачи будет считывать вложения из корзины, затем прикреплять их к модели и загружать новое вложение в S3.ActiveStorage должен хранить эти вложения в папке под названием «варианты» в корневом каталоге корзины.Во время выполнения граблей не возникает никаких ошибок, и повторное выполнение задачи не поможет.Вы видите что-нибудь, что может помешать загрузке этих вложений.

У меня есть мои настройки конфигурации AWS в storage.yml и я указываю

config.active_storage.service = :amazon

в моих файлах конфигурации среды.

...