Поскольку скрепка устарела, я переносил свое приложение на использование 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
в моих файлах конфигурации среды.