nowa / carrierwave-upyun

UpYun storage for CarrierWave
161 stars 27 forks source link

add size method to avoid recreate_versions error #39

Closed Lupeipei closed 4 years ago

Lupeipei commented 4 years ago

在重建versions时遇到了一个bug。

问题描述:

调用 lib/carrierwave/uploader/cache.rb中 cache! 方法 时:

      def cache!(new_file = file)
        new_file = CarrierWave::SanitizedFile.new(new_file)
        return if new_file.empty?
        ……
      end

发现 new_file.empty? 返回 true,其中 file 是 上传的upyun文件。

随后查看lib/carrierwave/sanitized_file.rb,发现是因为upyun 未定义 size method, 导致 size 返回0,故new_file.empty? 返回true。

    def size
      if is_path?
        exists? ? File.size(path) : 0
      elsif @file.respond_to?(:size)
        @file.size
      elsif path
        exists? ? File.size(path) : 0
      else
        0
      end
    end

file.rb中添加 size method后,问题解决。

huacnlee commented 4 years ago

Just released version 1.0.4