アップロードされているファイルを別のサーバーに移行するために試したこと
# avator.file : CarrierWave::Uploader
# another_directory: Fog::Storage::AWS::Directory etc
avator = Avator.first
[avator.file, *avator.file.versions.values].compact.each do |uploader|
file = uploader.instance_variable_get(:@file)
another_directory.files.create(
{
body: file.read,
content_type: file.content_type,
key: uploader.path,
public: uploader.fog_public
}.merge(uploader.fog_attributes)
)
end
file
CarrierWave::Uploader のインスタンス変数 @file
に CarrierWave::Storage::Fog::File
インスタンスがセットされているのでこれを活用する
path
CarrierWave::Uploader#path をそのまま key に使う