recreate_versions!当版本已存在时,不适用于fog / s3

时间:2014-04-02 18:18:51

标签: amazon-s3 carrierwave fog

我有一个已安装的上传器FileUploader,它有许多版本。已经上传了许多TIFF图像,虽然它们的文件名是正确的,但目前的版本还没有正确转换为JPEG / PNG。

更新了FileUploader以正确转换为JPEG / PNG后,重新创建的版本可以在本地文件系统上完美运行。在S3上使用远程图像时,即使使用指南(https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Recreate-and-reprocess-your-files-stored-on-fog),任何已经存在的图像都不会更新,尽管它们的时间戳有效。如果删除存储在S3上的版本,则会正确创建版本。

1 个答案:

答案 0 :(得分:0)

我今天遇到了这个问题,您引用的链接在2年前已更新为:

使用carrierwave_backgrounder,您需要将process _#{uploader} _upload标志设置为true,否则它将不会生成版本。

因此,应该是:

YourModel.find_each do |ym| 
  begin
    ym.process_your_uploader_upload = true # if you use carrierwave_backgrounder
    ym.your_uploader.cache_stored_file! 
    ym.your_uploader.retrieve_from_cache!(ym.your_uploader.cache_name) 
    ym.your_uploader.recreate_versions!(:version1, :version2) 
    ym.save! 
  rescue => e
    puts  "ERROR: YourModel: #{ym.id} -> #{e.to_s}"
  end
end

我刚刚对此进行了测试,可以确认即使您的FOG存储器上存在版本(以我的情况为S3),它也会创建新版本并覆盖它们。