使CarrierWave不复制原始文件的版本

时间:2012-06-03 13:40:31

标签: ruby-on-rails carrierwave

据我所知,对于上传者中定义的每个version,CarrierWave会将原始文件从缓存复制到tmp路径,并将此tmp文件移交给此版本定义的任何处理。然后它可以存储所有文件。有时(例如,当生成用于视频文件的缩略图时),这种复制可能非常昂贵。我可以让CarrierWave不复制并让我在缓存中生成原始文件的版本吗?

修改我有move_to_cachemove_to_store返回 false 为真(哎呀我很快忘记了自己的脑袋)。我在CarrierWave::RMagick

的行上写了一个测试处理模块
module CarrierWave
  module Thumbnailer
    def generate_thumbnails
      debugger
      x = 1
    end
  end
end

我在上传器中有以下几行

version :thumb do
  process :generate_thumbnails
end

但是当debugger(我可以开始处理的地方)停止执行时,CarrierWave已经复制并重命名了上传的文件。我可以在缓存目录中看到它们。

1 个答案:

答案 0 :(得分:2)

查看自述文件中的Large Files ...下的自述文件:

class MyUploader < CarrierWave::Uploader::Base
  def move_to_cache
    true
  end
  def move_to_store
    true
  end
end
  

当move_to_cache和/或move_to_store方法返回true时,文件   将被分别移动(而不是复制)到缓存和存储。