重新创建版本 - carrierwave-fog-aws

use*_*798 11 ruby-on-rails amazon-s3 recreate carrierwave fog

我正在尝试使用我的模型中的以下内容重新创建我上传的图像...

  Post.all.each do |ym| 
      ym.avatar.cache_stored_file! 
      ym.avatar.retrieve_from_cache!(ym.avatar.cache_name) 
      ym.avatar.recreate_versions! 
      ym.save! 
  end
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误....

(undefined method `body' for nil:NilClass):
Run Code Online (Sandbox Code Playgroud)

我的上传者名为AvatarUploader,适用于我的Post模型.关于如何解决这个问题的任何建议?

Erv*_*ouS 0

在只读服务器(Heroku)上使用异步处理时,我遇到了类似的问题。就我而言,定义文件大小时出现问题,我def size从雾文件类中解决了猴子修补问题:

module CarrierWave
  module Storage
    class Fog < Abstract
      class File
        def size
          file.nil? ? 0 : file.content_length
        end
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果问题仍然存在并且当您发布回溯和 gems 配置的更多详细信息时,我可以为您提供更多帮助。