不建议使用回形针,因此我一直在迁移应用程序以使用Active Storage代替回形针。我已经为新的数据库结构运行了迁移,并创建了适当的模型以匹配带有附件的所有对象。但是,我正在遵循此指南:https://github.com/thoughtbot/paperclip/blob/master/MIGRATING.md
我在远程主机上移动文件时遇到问题。我创建了一个rake任务来完成它,看起来像:
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应该将这些附件存储在根存储区目录中名为“ variants”的文件夹中。在rake任务期间没有抛出任何错误,重新运行该任务将无济于事。您是否看到任何可能阻止这些附件上载的内容。
我确实在storage.yml中设置了我的AWS配置,并指定
config.active_storage.service = :amazon
在我的环境配置文件中。